我知道,除了使用匿名类方法外,我们无法在Java中实例化接口或抽象类,但其背后的 原因 是什么?
您无法实例化接口或抽象类,因为它会违背面向对象的模型。
接口代表合同-接口实现者将能够做所有这些事情,履行合同的承诺。
抽象类是类似的想法,因为它们表示未履行的合同,是能够做事的承诺,除了与接口不同的是,它们定义了一些功能或字段,但需要在使用前进行填写。
简而言之,在一个好的面向对象程序中,您永远都不想实例化一个抽象类或接口。如果这样做,则设计可能是错误的。
(匿名类实际上是非抽象的实例化,只是它们不需要命名,因此它们看起来像是“原始接口”,但实际上是没有名称的接口的实现。这就是我的理解。 , 至少。)