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

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

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

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

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

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

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

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

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

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