黑马程序员技术交流社区

标题: 访问父类的父类的父类的里的成员变量的方法 [打印本页]

作者: bullfrog    时间: 2014-9-8 22:33
标题: 访问父类的父类的父类的里的成员变量的方法
  1. interface I           { int x = 0; }
  2. class T1 implements I { int x = 1; }
  3. class T2 extends T1   { int x = 2; }
  4. class T3 extends T2 {
  5.     int x = 3;
  6.     void test() {
  7.         System.out.println("x=\t\t"          + x);
  8.         System.out.println("super.x=\t\t"    + super.x);
  9.         System.out.println("((T2)this).x=\t" + ((T2)this).x);
  10.         System.out.println("((T1)this).x=\t" + ((T1)this).x);
  11.         System.out.println("((I)this).x=\t"  + ((I)this).x);
  12.     }
  13. }
  14. class Test {
  15.     public static void main(String[] args) {
  16.         new T3().test();
  17.     }
  18. }
  19. 结果为:

  20. x=              3
  21. super.x=        2
  22. ((T2)this).x=   2
  23. ((T1)this).x=   1
  24. ((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