Использование модификатора new
позволяет скрыть переопределенный метод за новым, с таким же названием. Новый метод может иметь отличную сигнатуру. Сокрытие методов не следует путать с переопределением методов, потому что сокрытие методов не позволяет использовать полиморфизм.
class Foo : Object {
public void my_method() { }
}
class Bar : Foo {
public new void my_method() { }
}
Вы все еще можете вызвать первоначальный метод приведения к основному классу, или интерфейсу:
void main() {
var bar = new Bar();
bar.my_method();
(bar as Foo).my_method();
}