Я заметил, что MSDN очень осторожно относится к терминам «наследовать» и «реализовывать».Наследуем ли мы или реализуем абстрактные классы?
Мы реализуем интерфейсы, но наследуем не-абстрактные классы. Я полагаю, что полные методы абстрактного класса наследуются, но реализуются абстрактные методы .
- Какой термин следует использовать, если абстрактный класс состоит из полных и абстрактных методов? Абстрактный класс не имеет экземпляров с одной стороны (это характеристика интерфейса), с другой стороны, он может содержать полные методы (это характеристика класса).
«extends» и «inherits from» используются в большинстве языков ООП для обозначения вывода из базового класса, независимо от того, является ли базовый класс абстрактным или нет, не меняет отношения. Добавление методов расширения является достаточным основанием, чтобы не путать вещи, используя «расширения» для отношений наследования при обсуждении .net, IMO. «реализует» всегда ссылается на реализацию интерфейса. –
Предположим, вы должны использовать термин «переопределить» –
Класс, который наследует от другого класса, может переопределять виртуальные методы его базового класса (и он * должен *, если эти методы являются абстрактными), но отношение наследования необязательно подразумевает переопределение поведение, например действительное (хотя и, вероятно, плохо продуманное ...) отношение наследования может включать только добавление дополнительных методов/полей в подкласс, без переопределения какого-либо поведения вообще. –