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
。
這不完全是。我在這個問題下面發佈的鏈接中提到了真正的答案 –