Java:抽象类中的最终变量

ima*_*ake 13 java constructor final abstract

在Java中,我无法创建抽象类的实例.那么为什么不对下面的代码发出尖叫呢?

public abstract class FooType {
    private final int myvar;

    public FooType() {
        myvar = 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

Hen*_*ann 17

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

你无法实例化,FooType因为它是抽象的.但是如果你创建一个非抽象的子类FooType,那么将调用构造函数.

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