Насколько я вижу в C #,
виртуальные функции не только для полиморфизма,
это также для переопределения предупреждения метода скрытия компилятором
я прав?
приведу пример:
class A
{
public void func(int a)
{
....
}
}
class B:A
{
public void func(int a)
{
....
}
}
сейчас я использую B x = new B();
поэтому компилятор предупредит меня, что метод в классе B скрывает тот, что в A.
так что есть 2 решения:
1) пометить единицу в B ключевым словом New
2) сделать один в 'A' virtual
и один в B - Overriding
- это очистит предупреждение о сокрытии ..
единственная разница будет с Полиморфизм A x = new B();
если в классе B будет 'new' - всегда будет вызываться тот, кто из A, тогда как если я использую virtual
и not , то новый механизм - тот из Б будет называться.
так что у виртуала есть 2 роли в .net: (пожалуйста исправьте меня, если я не прав)
1) разрешить скрывающее предупреждение (в среде неполиморфизма )
2) и, конечно, переопределение функций в yes-polymorphism enviroment .
пожалуйста, поправьте меня, если я ошибаюсь.