0
我有一些麻烦理解这个代码如何精确地工作。超级VS这个当内部类扩展外部类
public class Outer {
private int num = 0;
public void setNum(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public Outer inner() {
return new Inner();
}
private class Inner extends Outer {
public int getNum() {
// do something extra
return super.num; // changing to 'this.num' throws an error
}
}
}
运行
Outer o = new Outer();
Outer i = o.inner();
o.setNum(4);
i.setNum(5);
System.out.println(i.getNum());
正确地输出5,但如果我改变super.num
到this.num
我得到一个错误说The field Outer.num is not visible
。当然,如果我将num
设置为public
,代码确实可行。我只是不明白为什么它运行super
,但不是this
。
这不完全是。我在这个问题下面发布的链接中提到了真正的答案 –