何时使用Interface以及何时使用Abstract类

时间:2014-04-30 11:48:55

标签: java user-interface polymorphism abstract-class

你们可以解释一下我应该在哪种情况下使用Interface,以及我应该选择抽象类......?请记住,我不是在询问Interface和Abstract类之间的区别。

4 个答案:

答案 0 :(得分:1)

如果您发现对象之间存在任何关系,则可以使用abstract 例如:Bird, Aeroplane, Paper Rocket这些都是可以飞行的,但这些对象之间没有任何Is a relationship,因此您可以使用interface而不是abstract, 因为鸟类,飞机和纸质火箭都可以飞行,但飞行方式不同。

当然,谷歌有很多不同之处。

答案 1 :(得分:0)

在以下情况下使用Abstract class:您有一些必须在一个地方实施的常用功能(方法),而其他具体类只能使用它。

在以下情况下使用Interface:没有常用功能。每个具体类都有自己的功能实现。

答案 2 :(得分:0)

我建议坚持以下规则:

  • 仅在需要code-reuse
  • 时使用抽象类
  • 限制对定义抽象类的包的可见性

否则使用接口和委托。但是,与软件设计一样,您必须针对每种具体情况做出正确的决定。如果您必须应用限制/规则但需要一些灵活性,请考虑使用策略模式而不是继承。

抽象类的问题在于你不能从多个类继承。因此,如果您需要is类型为AB并且两者都是抽象类的类型,您如何实现这一目标?接口是开放的,可以不受任何限制地以任何其他类型实现。

答案 3 :(得分:-1)

我们首先要优先考虑。如果我们必须在该类中编写一些常用功能,那么只有那时你才能去抽象类。否则使用界面。因为我们可以实现接口的数量但是我们只能扩展一个类,所以将来你必须去接口而不是抽象类。