【发布时间】:2014-03-08 00:19:47
【问题描述】:
我明白了:
- 因为抽象类本身没有任何东西,例如车辆,我们想要创建一个具体实现的对象,例如 Car、Bike 等。
- 抽象类的构造函数在对象链接期间被调用。
- 我们永远不能直接创建抽象类的对象,即使它包含构造函数并且所有方法都已实现。
但从编译器的角度来看,为什么 Java 会强制执行这些规则?
【问题讨论】:
-
如果作者希望你能够实例化它,他们可以使它成为非抽象的。他们没有——即使他们确实实现了所有方法——这一事实是一种软件架构选择;他们告诉你他们不相信使用默认实现是有意义的。问他们为什么,或者接受它并创建一个子类。
-
你不能这样做,因为作者将类标记为
abstract,这是Java中这个词的一部分含义。 -
因为Java语言是这样定义的。
-
@Raymond Chenon 在那个答案中,抽象类没有被实例化。抽象类的匿名子类被实例化。
标签: java oop inheritance constructor abstract-class