黑马程序员技术交流社区

标题: 子类父类同名属性如何确定哪个隐藏 [打印本页]

作者: 回音    时间: 2013-12-9 13:59
标题: 子类父类同名属性如何确定哪个隐藏
本帖最后由 回音 于 2013-12-9 20:40 编辑

初来乍到,有一小白问题不懂,望指教:
如下代码:
  1. class Parent
  2. {
  3.     int x = 1;
  4.     int y = 2;

  5.     void dispParent()
  6.     {
  7.         System.out.println("Parent : x = " + x + ", y = " + y);
  8.     }
  9. }

  10. class Child extends Parent
  11. {
  12.     int x = 3;
  13.     int y = 4;

  14.     void dispChild()
  15.     {
  16.         System.out.println("Child : x = " + x + ", y = " + y);
  17.     }
  18. }

  19. public class Test
  20. {
  21.     public static void main(String[] args)
  22.     {
  23.         Child c = new Child();
  24.         c.dispParent();
  25.         c.dispChild();
  26.     }
  27. }
复制代码
为什么调用子类继承过来的dispParent方法就会显示Parent类的x,y值,而不是Child类的x,y值?父类的同名属性不是被隐藏了吗?




作者: ixiangfeng    时间: 2013-12-9 14:12
成员函数在多态调用时,编译看左边,运行看右边(指多态定义时的左边和右边,左边是父类,右边是子类)
静态成员函数的特点:无论编译和运行,都参考左边()
成员变量的特点:无论编译和运行,都参考左边(引用型变量所属的类)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2