构造函数在抽象类中有什么用?

既然我们无法实例化抽象类,那么在抽象类中使用构造函数的必要性是什么?

抽象类被设计为扩展,来自子类的每个构造函数必须从基类执行对构造函数的调用 ,因此您需要在抽象类中使用构造函数。

抽象类是一个骨架,因此直接实例化它是没有意义的,因为它仍然是不完整的(儿童将提供其余的)。

我们可以使用抽象类构造函数来执行与每个子类相关的代码。 这样可以防止重复代码

一个例子:

public abstract class BaseClass { private String member; public BaseClass(String member) { this.member = member; } ... abstract methods... } public class ImplementingClass extends BaseClass { public ImplementingClass(String member) { /* Implementing class must call a constructor from the abstract class */ super(member); } ... method implementations... } 

抽象类可以有字段和非抽象方法(是什么使它成为抽象类rater而不是接口)。 当实例化扩展它的类时,可能需要初始化这些字段。

在抽象类中有一个构造函数允许你调用super(foo); 初始化它们而不是直接进行