为什么我们不能在没有匿名类方法的情况下在java中实例化接口或抽象类?

时间:2013-06-13 00:31:49

标签: java class interface abstract

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

3 个答案:

答案 0 :(得分:15)

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

接口代表契约 - 接口的实施者能够完成所有这些事情,履行合同的承诺。

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

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

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

答案 1 :(得分:3)

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

  • Interface没有实现任何方法,所以没有任何目的可以实例化它,因为调用方法时“不会”会发生
  • Abstract类可以有abstract方法声明,这就像没有实现的接口方法。

答案 2 :(得分:1)

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