黑马程序员技术交流社区

标题: 为什么在这个程序中有空构造函数程序就可运行? [打印本页]

作者: haio    时间: 2014-3-4 18:53
标题: 为什么在这个程序中有空构造函数程序就可运行?
本帖最后由 haio 于 2014-3-4 20:59 编辑

是老师视频中的试题但是不明白为什么在这个程序中有空构造函数程序就可运行?
希望有运算过程。谢谢大家!请指教指教!!

写出程序结果
class Super
{
      int i = 0;
      public Super(String s)
      {
          i = 1;
      }
}
class Demo extends Super
{
    public Demo(String s)
    {
        i = 2;
    }
    public static void main(String [ ] args)
    {
        Demo d = new Demo("yes");
        System.out.println(d.i);
    }
}

作者: 年少丶    时间: 2014-3-4 19:57
默认先调用父类的空构造方法
作者: 心灵的一扇窗    时间: 2014-3-4 20:20

首先给你解释以上的报错信息:隐含的父类无参构造函数没有定义,必须明确地调用另一个构造函数
必须在父类中定义一个无参构造函数,原因是在子类使用它自己的构造函数对它的对象进行初始化时,会先调用父类的无参构造函数,
由于父类中定义了一个含参的构造函数,于是默认的无参构造函数就消失了,必须重新进行定义。
正确代码如下:
package com.ambow.answer;
class Super
{
      int i = 0;
      public Super(){
      
      }
      public Super(String s)
      {
          i = 1;
      }
}
class Demo extends Super
{
    public Demo(String s)
    {
        super();
        i = 2;
    }
    public static void main(String [ ] args)
    {
        Demo d = new Demo("yes");
        System.out.println(d.i);
    }
}


作者: haio    时间: 2014-3-4 20:58
明白了,谢谢!!




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