A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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.
我的观点就是先看自己有没有,没有就去父类找。这种理解合不合理?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

正序浏览
class Zi extends Fu
{
        int num=5;
        void show()
        {
                int num =4
                System.out.println(num);
        }
}
我的感受就是虚拟机的默认添加机制,像我上面这个方法有num,默认是无this或super引用,当方法中没有,默认添加this,子类没有,默认添加super。都没有,编译报错。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
可以参考方法的Override,子类加上int num=5; 相当于把父类的num属性重写了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马