在Java中,我们什么时候应该使用接口或抽象类?

4
6个回答

3

除非你需要提供子类一些状态,或者提供子类某些方法的默认实现,或者想要推迟一些抽象方法的实现,否则请始终使用接口。

  • 如果你需要为子类提供一些状态,请使用抽象类。
  • 如果你需要为子类提供某些方法的默认实现,请使用抽象类。
  • 如果你想要推迟一些抽象方法的实现,请使用抽象类。

请注意,你只能扩展一个类,而可以实现多个接口。因此,如果有任何可能子类需要扩展其他类,请使用接口。

以下是一些讨论此主题的良好链接:


1

0

如果你不想实现任何方法,只是想定义你的契约,那么你就可以使用接口。

然而,如果你需要一些已经实现的方法,那么你应该使用抽象类。



0

如果您想要为子类提供部分实现并且只想要提供必须被实现的方法签名,则使用抽象类。如果您只想要提供必须被实现的方法签名,则使用接口。同时提供接口抽象类实现部分内容也是完全正常的。

但是,抽象类有一个限制:在子类中,您只能扩展一个(抽象)类,但是您可以在单个类中实现任意多个接口。


0

接口仅仅是一组 public 方法签名和 public static final 字段。没有构造函数,没有受保护的/内部方法,也没有其他类型的字段。

另一方面,任何类只要在声明前加上 abstract 就可以成为抽象类。它们可以声明抽象方法并实现接口和其他抽象类而不定义方法实现。

抽象类在继承方面更具限制性(只能有一个子类),但你可以在其中实现方法和构造函数。

一个类可以实现任意数量的接口,但没有默认的方法和构造函数实现。

这就是为什么最好提供一个抽象类作为接口的默认实现选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接