我知道,除了使用匿名类方法之外,我们无法在java中实例化接口或抽象类,但它背后的原因是什么?
答案 0 :(得分:15)
您无法实例化接口或抽象类,因为它会违反面向对象的模型。
接口代表契约 - 接口的实施者能够完成所有这些事情,履行合同的承诺。
抽象类是一个类似的想法,因为它们代表了一个未完成的契约,一个能够做事的承诺,除了不同的接口,它们已经定义了一些函数或字段,但需要在它们可以使用之前填写。
简单地说,在一个好的面向对象的程序中,你永远不应该想要实例化一个抽象类或接口。如果你这样做,设计可能是错误的。
(匿名类实际上是非抽象实例,只是它们不需要给出名称,因此它们看起来像是“原始接口”,但它们实际上是没有名称的接口的实现。这是我的理解,至少。)
答案 1 :(得分:3)
这是一个没有深层概念的基本解释。
Interface
没有实现任何方法,所以没有任何目的可以实例化它,因为调用方法时“不会”会发生Abstract
类可以有abstract
方法声明,这就像没有实现的接口方法。答案 2 :(得分:1)
您无法实例化接口或抽象类,因为它们的某些方法可能没有任何定义。