黑马程序员技术交流社区

标题: 关于继承中子类中出现非私有的同名成员变量时的问题 [打印本页]

作者: 闪亮未来    时间: 2013-11-2 17:55
标题: 关于继承中子类中出现非私有的同名成员变量时的问题
  1. class Fu
  2. {
  3.         int num=3;
  4. }
  5. class Zi extends Fu
  6. {
  7.         //int num=5;
  8.         void show()
  9.         {
  10.                 System.out.println(num);
  11.         }
  12. }


  13. class ExtendsDemo2
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                 Zi z=new Zi();
  18.                 z.show();
  19.         }
  20. }
复制代码
子类中最后打印的那个num默认省略了this. 如果z.show执行后,如果子类中的 int num=5没有被注释,输出的是该类中的5 ,当5被注释后,不管 是  this.num 还是 super.num 或者默认 num,都执行的是父类的num=3.
我的观点就是先看自己有没有,没有就去父类找。这种理解合不合理?

作者: 零下五度的水    时间: 2013-11-2 18:17
可以参考方法的Override,子类加上int num=5; 相当于把父类的num属性重写了
作者: 寻丶丶觅    时间: 2013-11-2 19:09
class Zi extends Fu
{
        int num=5;
        void show()
        {
                int num =4
                System.out.println(num);
        }
}
我的感受就是虚拟机的默认添加机制,像我上面这个方法有num,默认是无this或super引用,当方法中没有,默认添加this,子类没有,默认添加super。都没有,编译报错。





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