这是给定的代码:
class Super {
protected int n;
Super(int n){
this.n=n;
}
public void print(){
System.out.println("n="+n);
}
}
class Sub {
Sub(int m){
Super.n=m;
}
}
class Test{
public static void main(String[] args){
Sub s= new Sub(10);
s.print();
}
}
我收到了这些错误:
Main.java:19:错误:无法从静态上下文引用非静态变量n Super.n =米;
........... ^
Main.java:25:错误:找不到符号
短跑();
有人可以告诉我为什么会出现这些错误吗?
答案 0 :(得分:1)
您的问题是Sub类:
class Sub {
Sub(int m){
Super.n=m; // <- this line of code!
}
}
Super.n是一种访问类范围中定义的变量的语法。在java中,我们称这种变量为静态变量。
要解决此问题,您必须执行以下操作:
// With the extends Super, you are inheriting properies and methods
// from Super class
class Sub extends Super {
Sub(int m){
// Now you are calling a constructor from the parent
super(m);
}
}
答案 1 :(得分:0)