我有一个抽象类,我想声明最终变量.
但是,我想只在我的子类的构造函数中为这些变量赋值.
显然,这是不可能的,因为所有"最终字段都必须初始化".我不明白为什么,因为无论如何都不可能实例化一个抽象类.
我想拥有的是这样的:
abstract class BaseClass {
protected final int a;
}
class SubClass extends BaseClass {
public SubClass() {
a = 6;
}
}
Run Code Online (Sandbox Code Playgroud)
我想象一下在实现接口时类似于方法的东西.然后你也被迫在(子)类中实现方法.
Vik*_*dor 17
您应该在抽象类中定义一个构造函数,该构造函数接受一个值a并从子类中调用此构造函数.这样,您可以确保始终初始化最终属性.
abstract class BaseClass {
protected final int a;
protected BaseClass(int a)
{
this.a = a;
}
}
class SubClass extends BaseClass {
public SubClass() {
super(6);
}
}
Run Code Online (Sandbox Code Playgroud)