我是在参考java语言规范来理解super的使用。虽然我了解第一个用例,即
表单
super.Identifier
引用当前对象的名为 Identifier 的字段,但当前对象被视为当前类的超类的一个实例。
我似乎无法理解以下用例:
该表单
T.super.Identifier
引用对应于 的词法封闭实例的名为 Identifier 的字段T
,但该实例被视为 的超类的实例T
。
有人可以在代码的帮助下解释一下吗?
我想以下可以说明第二种情况:
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