Cannot refer to an instance field arg while explicitly invoking a constructor

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还没有初始化,所以才会被编译器报错!

发布了81 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/GracefulGuigui/article/details/103938895
今日推荐