黑马程序员技术交流社区
标题:
访问父类的父类的父类的里的成员变量的方法
[打印本页]
作者:
bullfrog
时间:
2014-9-8 22:33
标题:
访问父类的父类的父类的里的成员变量的方法
interface I { int x = 0; }
class T1 implements I { int x = 1; }
class T2 extends T1 { int x = 2; }
class T3 extends T2 {
int x = 3;
void test() {
System.out.println("x=\t\t" + x);
System.out.println("super.x=\t\t" + super.x);
System.out.println("((T2)this).x=\t" + ((T2)this).x);
System.out.println("((T1)this).x=\t" + ((T1)this).x);
System.out.println("((I)this).x=\t" + ((I)this).x);
}
}
class Test {
public static void main(String[] args) {
new T3().test();
}
}
结果为:
x= 3
super.x= 2
((T2)this).x= 2
((T1)this).x= 1
((I)this).x= 0
复制代码
只能在T3的非静态方法或者构造函数,或者初始化代码块{}里这样访问,至于为什么成员变量名称都是x,那是因为如果不同,比如有一个父类的x改成y,就没必要这样访问了,因为直接继承了,可以用this.y来访问。注意,是
((父类)this).x
不是
父类.this.x //这个会报错 No enclosing instance of the type T2 is accessible in scope
作者:
turan
时间:
2014-9-9 00:19
看过 虽然看得不是很懂
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2