在Java程序中,我有多个从父类(抽象的)继承的子类。我想表达的是,每个孩子都应该有一个仅设置一次的成员(我打算从构造函数中进行设置)。我的计划是编写代码。像这样:
public abstract class Parent {
protected final String birthmark;
}
public class Child extends Parent {
public Child(String s) {
this.birthmark = s;
}
}
但是,这似乎并不能取悦Java之神。在父类中,我收到消息birthmark
“可能尚未初始化”,在子类中,我得到“ birthmark
无法访问最终字段”。
那么Java的处理方式是什么?我想念什么?
您无法执行此操作,因为在比较父类时,编译器无法确定子类会对其进行初始化。您必须在父级的构造函数中对其进行初始化,然后让子级调用父级的构造函数:
public abstract class Parent {
protected final String birthmark;
protected Parent(String s) {
birthmark = s;
}
}
public class Child extends Parent {
public Child(String s) {
super(s);
...
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句