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

新手上路,请多包涵

我明白:

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

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

原文由 sandejai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 523
2 个回答

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

原文由 Eli Iser 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

想想修理汽车。有人拆下了刹车片,准备在第二天更换。现在,为了防止有人不小心驾驶这辆车(没有安装刹车),机械师在方向盘上安装了一把锁。这是一种故障安全措施。

原文由 kevin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏