简体   繁体   中英

Why can't we instantiate an interface or an abstract class in java without an anonymous class method?

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

You can't instantiate an interface or an abstract class because it would defy the object oriented model.

Interfaces represent contracts - the promise that the implementer of an interface will be able to do all these things, fulfill the contract.

Abstract classes are a similar idea, in that they represent an unfulfilled contract, a promise to be able to do things, except unlike interfaces they have some of their functions or fields defined but need filling in before they can used.

Simply, in a good object oriented program, you should never want to instantiate an abstract class or interface. If you do, the design is probably wrong.

(Anonymous classes are actually non-abstract instantiations, just that they don't need to be given a name, so they appear to be 'raw interfaces' but they're actually an implementation of the interface that has no name. That's my understanding, at least.)

Here is a basic explanation without deeper concept.

  • Interface has no method implemented, so there is no purpose to instantiate it as 'nothing' will happen when invoke a method
  • Abstract class can have abstract method declaration, which is like a interface method with no implementation.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM