【发布时间】:2016-06-07 05:54:46
【问题描述】:
我注意到 MSDN 对“继承”和“实现”这两个术语非常谨慎。
我们实现接口,但继承非抽象类。 我想抽象类的完整方法是继承的,但是 实现了抽象方法。
- 当抽象类由完整方法和抽象方法组成时,我们应该使用什么术语?抽象类一方面没有实例(这是接口的特性),另一方面它可能包含完整的方法(这是类的特性)。
【问题讨论】:
-
“extends”和“inherits from”在大多数 OOP 语言中可互换使用,以指示从基类派生,无论基类是否是抽象的,都不会改变关系。在讨论 .net、IMO 时,添加扩展方法足以避免通过使用“扩展”来表示继承关系而混淆事物。 “实现”总是指实现一个接口。
-
假设,你应该使用术语“覆盖”
-
从另一个类继承的类可能会覆盖其基类的虚方法(如果这些方法是抽象的,则它必须这样做),但继承关系不一定暗示被覆盖的行为,例如有效的(尽管可能考虑不周......)继承关系可能只包括向子类添加额外的方法/字段,而不会覆盖任何行为。
-
如果一个类也被声明为抽象类,则它只能覆盖其基本抽象类中的几个(不是全部)虚拟方法。
标签: .net oop inheritance abstract-class implements