为什么我们不能在Java中实例化抽象类?

我理解:

  1. 由于抽象类本身并不是什么,例如车辆,我们希望创建一个具体实现的对象,如Car,Bike等。
  2. 抽象类的构造函数在对象链接期间被调用。
  3. 我们永远无法直接创建抽象类的对象,即使它包含构造函数并且所有方法都已实现。

但从编译器的角度来看,Java为什么要强制执行这些规则呢?


答案 1

抽象类不完整!作者将其标记为抽象,以告诉您代码中缺少某些实现。作者已经完成了一些工作,但您必须自己填写一些内容才能使其正常工作。关键字可确保没有人会意外启动此不完整的类。abstract

想想修理一辆车。有人已经取下了刹车片,并将在第二天更换它们。现在,为了防止有人意外驾驶这辆车(没有安装刹车),机械师在方向盘上安装了一个锁。这是一种故障安全措施。


答案 2

这不是一个技术限制,而是(正如你所指出的)一个合乎逻辑的限制。Java(和许多其他语言)强制执行各种规则不是因为它们不可能被打破,而是因为这是语言的一个有意的一部分。