在Java中,我无法创建抽象类的实例。那么为什么不让下面的代码黯然失色呢?

public abstract class FooType {
    private final int myvar;

    public FooType() {
        myvar = 1;
    }
}

最佳答案

代码很好,最终变量在FooType的构造函数中初始化。

您无法实例化FooType,因为它是抽象的。但是,如果您创建FooType的非抽象子类,则将调用构造函数。

如果在构造函数中没有对super(...)的显式调用,则Java编译器将自动添加它。因此,可以确保调用继承链中每个类的构造函数。

09-11 10:26