为什么Java中的抽象类有构造函数?

2022-08-31 14:42:27

为什么 Java 中的类有一个 ?abstractconstructor

它构造了什么,因为我们无法实例化一个类?abstract

有什么想法吗?


答案 1

Java中的构造函数实际上并不“构建”对象,它用于初始化字段。

想象一下,您的抽象类具有字段 x 和 y,并且无论最终创建什么实际的具体子类,您始终希望以某种方式初始化它们。因此,您需要创建一个构造函数并初始化这些字段。

现在,如果您有两个不同的抽象类子类,当您实例化它们时,将调用它们的构造函数,然后调用父构造函数并初始化字段。

如果不执行任何操作,将调用父级的默认构造函数。但是,您可以使用 super 关键字来调用父类上的特定构造函数。


答案 2

原因有二:

1)抽象类具有,并且这些构造函数总是在实例化具体子类时调用。我们知道,当我们要实例化一个类时,我们总是使用该类的构造函数。现在,每个构造函数都通过对 super() 的隐式调用来调用其超类的构造函数。constructors

2)我们知道构造函数也用于初始化类的字段。我们还知道抽象类可能包含字段,有时需要使用构造函数以某种方式初始化它们。