是否存在Abstract类优于Interface的情况

Ebb*_*ham 7 java abstract-class interface

我有一个场景,其中有几个子类有类似的实现和一些额外的方法,实现与每个子类不同.我假设抽象类对于这种情况是一个不错的选择.但是如果抽象类实现包含所有方法声明的接口会更好.或者我应该坚持使用抽象类.

简而言之,我想知道我应该在层次结构顶部而不是接口上更喜欢抽象类的场景.

Boz*_*zho 5

如果您的子类与抽象类具有is-关系,请使用抽象类。

您可以同时具有一个抽象类和一个接口-抽象类指定实现,而接口则指定API。

收集框架就是一个例子-它具有 ArrayList extends AbstractList implements List


rob*_*dev 5

抽象类不必是完全抽象的.您可以定义所有子类将按原样使用的某些函数(和变量),并且只留下某些子类要实现的方法.接口具有无法定义任何功能的限制.

另一方面,接口允许类灵活地实现多个接口,而类只能扩展另一个类.从这个意义上讲,接口可能总是优于纯粹的抽象类.但是抽象类仍然有很多用途,它们包含一些重用的功能.