接口与抽象和继承

mj1*_*829 1 inheritance abstract-class extends interface multiple-inheritance

我已经看过了接口,抽象类和继承的用法.我看到每个都有它们的用途,但我仍然有点困惑.

我知道通常一个类只能扩展另一个类,虽然有些可能支持多重继承,但它可以实现多个接口(这可能是使用接口的主要原因).但是,如果我是正确的,这个类也可以被另一个类扩展.我还看到抽象类可能比接口更快,并且可以有非静态的最终变量.

所以,我仍然不确定何时使用哪个更好.也许通过举一些例子可以更好地理解这一点.我并不反对使用任何东西,但我认为有些东西是我看不到的.进一步的解释也许有帮助.提前致谢.

Gol*_*rol 5

如果要使用与基类相同的代码并使用额外的功能扩展它,则从基类继承非常有用.

虚拟和抽象与此有关.您可以使用基本实现创建虚拟方法.后代类可以(可选)更改或添加到此实现.抽象类本身是不完整的基类.声明了一个抽象方法,但还没有实现.后代类必须提供实现.如果基类实现流,这很有用,但该流的一部分需要由另一个类实现.基类需要能够调用该部分,这是声明抽象方法的地方.

界面是一个不同的故事.接口是关于类中存在哪些方法的契约,但它们可以由两个完全不相关的类实现.这很方便,因为您可以为小块功能创建小型接口.例如,可以保存的东西可以实现ISavable,它只强制存在方法'Save'.两个完全不同的类可以实现这一点,允许例如Save All功能只保存可以保存的所有内容.

多重继承是一种特定的语言功能,在许多语言中都不具备,但在许多语言中,通过使用接口和委托设计模式可以产生类似的效果.