我知道,除了使用匿名类方法之外,我们不能在 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.