Vin*_*igh 20 java inheritance static
我有一个非常奇怪的编译时错误:
class Super {
Super(int[] array) {
}
}
class Sub extends Super {
private final int number = 1;
Sub() {
super(new int[] { number }); //error
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
无法从静态上下文访问字段
我的问题
静态上下文在哪里?似乎静态甚至不会在这里发挥作用.
我偶然发现了这个试图回答别人的问题; 发现我感到困惑的错误.有人可以解释静态上下文的位置吗?
您的字段number应该是静态的,以便您可以在构造函数调用中使用它.否则你会得到cannot reference number before supertype constructor has been called因为在调用父类的构造函数之前该字段是不可访问的.
所以你的代码应该是这样的:
class Super {
Super(int[] array) {
}
}
class Sub extends Super {
private static final int number = 1;
Sub() {
super(new int[] { number }); //error
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1011 次 |
| 最近记录: |