0
このコードがどのように正しく動作するかを理解することには問題があります。内部クラスが外部クラスを継承しているときのスーパーと比較して
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を出力しますが、私はthis.num
にsuper.num
を変更した場合、私はThe field Outer.num is not visible
を言って、エラーを取得します。もちろん、num
をpublic
に設定してもコードは機能します。私はちょうどそれがsuper
で動いているが、this
で動かない理由を理解できない。
これは正確ではありません。本当の答えは私がこの質問の下に掲示したリンクで言及されています –