super の使い方を理解するために Java 言語仕様を参照していました。私は最初のユースケースを理解していますが、つまり
フォーム
super.Identifier
は現在のオブジェクトの Identifier という名前のフィールドを参照しますが、現在のオブジェクトは現在のクラスのスーパークラスのインスタンスとして表示されます。
次の使用例を理解できないようです。
フォーム
T.super.Identifier
は、 に対応する字句的に囲んでいるインスタンスの Identifier という名前のフィールドを参照しますT
が、そのインスタンスは のスーパークラスのインスタンスとして表示されますT
。
誰かがコードの助けを借りてこれを説明できますか?
2番目のケースの例として、次のことが考えられます。
class S{
int x=0;
}
class T extends S{
int x=1;
class C{
int x=2;
void print(){
System.out.println(this.x);
System.out.println(T.this.x);
System.out.println(T.super.x);
}
}
public static void main(String args[]){
T t=new T();
C c=t.new C();
c.print();
}
}
出力: 2 1 0