package s1;
public class M {
public static void main(String[] args) {
}
}
class M5 {
private int i;
public M5(int i) {
this.i = i;
}
}
class M6 extends M5 {
public int i = 9;
public M6() {
// 编译出错,提示Cannot refer to an instance field arg while explicitly invoking a constructor
super(i);
}
}
为什么会提示这个错误,原因还是涉及类的初始化顺序,具体可以参考https://blog.csdn.net/GracefulGuigui/article/details/103856984
不过我还是要在这里简单的说明一下,因为要创建M6对象,必须要先初始化M5(因为M5是M6的父类),而此时super(i)传递过去的成员域i还没有初始化,所以才会被编译器报错!