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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邝雄伟 中级黑马   /  2012-12-3 16:21  /  1071 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如此简单的代码,就是想不明白为什么输出的是0而不是3呢,有没有人可以解析一下,万分感谢

class Demo
{
        public static void main(String[] args)
        {
                Zi z = new Zi(3);
                System.out.println(z.a);
        }
}

class Fu
{
        int a;
         Fu(int a)
        {
                this.a=a;
        }
}

class Zi extends Fu
{
         int a;
         Zi(int a)
        {
                super(a);
                //this.name=name;
        }
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
class Fu
{
        int a;
         Fu(int a)
        {
                this.a=a;
        }
}

class Zi extends Fu
{
         int a;
         Zi(int a)
        {
                这里的3传给父类啦,子类的a还保持初始化的值0.
                 super(a);
                //this.name=name;
        }
}

主函数中你再加两句
Fu f = new Zi(3);
System.out.println(f.a);
父类的a值为3

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 崔维友 于 2012-12-3 17:21 编辑

你的代码中,子类并没有获得传入的值。如例:
  1. class ExtendsDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Children child = new Children("The name");
  6.                 System.out.println(child.name);
  7.         }
  8. }

  9. class Father
  10. {
  11.         String name;
  12.         Father(String name)
  13.         {
  14.                 this.name=name;
  15.                 System.out.println("Father's name :  "+this.name);
  16.         }
  17. }

  18. class Children extends Father
  19. {
  20.         String name;
  21.         Children(String childrenname)
  22.         {
  23.                 super(childrenname);    //直接给了父类,子类没有得到
  24.                 System.out.println("Children's name :  "+this.name);
  25.         }
  26. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
变量不会被覆盖,父类和子类中的a不是同一个,其他的就是2L说的了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马