黑马程序员技术交流社区

标题: 新手求助,继承中的构造函数 [打印本页]

作者: 邝雄伟    时间: 2012-12-3 16:21
标题: 新手求助,继承中的构造函数
如此简单的代码,就是想不明白为什么输出的是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;
        }
}

作者: xjandrew    时间: 2012-12-3 17:15
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


作者: 崔维友    时间: 2012-12-3 17:17
本帖最后由 崔维友 于 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. }
复制代码

作者: 黑马_张伟    时间: 2012-12-3 17:20
变量不会被覆盖,父类和子类中的a不是同一个,其他的就是2L说的了




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