2016-12-07 8 views
-7

Вопрос о языке программирования C#.Виртуальный метод родительского класса имеет свой собственный блок тела реализации?

Вопрос: «Виртуальный метод родительского класса имеет свой собственный блок тела реализации». Мой ответ: «false».

Является ли мой ответ правильным? Если это не так, пожалуйста, объясните мне, ребята.

+1

Он может иметь свою собственную реализацию, но вы можете перезаписать его –

+0

Пожалуйста, прочтите справочный центр. http://stackoverflow.com/help – Lexi

+3

Почему бы не провести исследование и проверить спецификацию C#? в частности, раздел 1.6.6.4 – Fran

ответ

1

Нет, ваш ответ в общем случае неверен.

В C# есть два (*) способов объявить виртуальный метод:

virtual Foo Method1() 

Или

abstract Foo Method2() 

В первом случае, это является обязательным, что метод имеет свое собственное тело реализации блок (или его собственный член функции с выражением). Во втором - наоборот, это не обязательно. Бывший может быть переопределенным в производных классах, последний должен быть переопределен в не абстрактных производных классах. Наконец, но не в последнюю очередь, подавляющее большинство виртуальных методов имеют прежнюю форму.

(*) пуристы могут утверждать, что члены интерфейса также являются виртуальными методами (точнее, виртуальным окончанием), но я проигнорирую проблему, поскольку она не изменяет ответ.