9

我知道,除了使用匿名类方法外,我们不能在 java 中实例化接口或抽象类,但它背后的原因是什么?

4

3 回答 3

18

您不能实例化接口或抽象类,因为它会违反面向对象的模型。

接口代表契约——接口的实现者将能够做所有这些事情,履行契约的承诺。

抽象类是一个类似的想法,因为它们代表了一个未履行的契约,一个能够做事的承诺,除了与接口不同的是,它们定义了一些功能或字段,但在使用之前需要填写。

简单地说,在一个好的面向对象程序中,你永远不应该实例化一个抽象类或接口。如果这样做,则设计可能是错误的。

(匿名类实际上是非抽象的实例化,只是它们不需要命名,所以它们看起来是“原始接口”,但它们实际上是没有名称的接口的实现。这是我的理解, 至少。)

于 2013-06-13T00:35:05.320 回答
4

这是一个没有更深概念的基本解释。

  • Interface没有实现方法,因此没有任何实例化它的目的,因为调用方法时不会发生任何事情
  • Abstract类可以有abstract方法声明,就像没有实现的接口方法。
于 2013-06-13T00:36:26.943 回答
1

您不能实例化接口或抽象类,因为它们的某些方法可能没有任何定义。

于 2013-06-13T00:37:01.233 回答