在 Java 中实例化抽象 class

Instantiating an abstract class in Java

我正在学习 OOP 概念。在阅读继承时,我了解到 super class 必须在初始化 subclass 之前初始化,即所有 super-class 的构造函数必须在 sub-[= 之前​​ 运行 19=]构造函数。另外,我们可以直接创建 super class 的实例。例如

SuperClass superClass = new SuperClass();

现在,我遇到了抽象的 classes。看来我们不能实例化一个抽象的class。要使用抽象 class,您必须从另一个 class 继承它,为其中的抽象方法提供实现。

我的问题是,在实例化具体子class时,抽象超级class的构造函数将在具体子class的构造函数之前被调用。如果是这样,为什么我不能直接实例化 Abstract super class?

抽象class就像一辆没有轮子的自行车。它为轮子定义了空间,但自行车车架卖家将轮子的类型留给最终卖家。它只是指出轮子应该连接到框架的位置以及要使用的螺栓。自行车有一个链条,连接到后轮应该去的地方,这样当脚踏车转动时,后轮就会向前推进。

你可以试试骑那辆自行车,但没有轮子它就走不动了。因为没有轮子可以转动,所以在转动小贩时会出现错误。

您需要具体的卖家来定义轮子将运行,只要它们以 pre-defined 方式连接。


图片由 https://www.flickr.com/photos/vrogy/ 提供,许可 CC-BY 2.0

所以尝试骑没有轮子的自行车就是在尝试实例化抽象 class。
即使你让它工作它也没有用,并且由于缺少轮子而向前推车时会抛出错误。

当你实例化方轮自行车时,它会正常工作,当你向前蹬车时,它会带你前进。

superclass的实例化纯粹是为了连接链条,可以移动转向轮,设置鞍座的高度,所有不包括车轮的标准功能放。 车轮不是抽象自行车的关注点。这是要设置的具体 classes 问题。