如何解决在父构造函数中使用子属性
class abstract Parent ()
{
private int a;
private final int b = a + 1; // a is null at that point
}
class Child extends Parent
{
public Child()
{
a = 2;
}
}
这在 C++ 中并不是真正的问题(因为指针),但我不确定如何在 Java 中处理这个问题。显然,当 a
尝试启动 Parent
时,b
等于 0。
我最初尝试在设置 super()
后调用 a
,但显然 super()
必须首先在 child
的构造函数中调用。我不想在 b
中设置 Childs
,而且我更希望 b
也是 final
。有什么想法吗?
解决方法
你想要的不能这样,你需要做的是将a
的值传递给Parent
的构造函数:
abstract class Parent {
private int a;
private final int b;
protected Parent(int a) {
this.a = a;
b = a + 1;
}
}
并将 Child
定义为:
class Child extends Parent {
public Child() {
super(2);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。