黑马程序员技术交流社区

标题: 编译失败,因为父类中缺少空参数的构造函数 [打印本页]

作者: limxing    时间: 2015-1-6 17:21
标题: 编译失败,因为父类中缺少空参数的构造函数
//14、写出程序结果,这个题 我没搞明白,大神给我说说吧
class Super
{
        int i=0;
        public Super(String s)
        {
                i=1;
        }
}

class  Test14 extends Super
{
        public Test14(String s)
        {
                i=2;
        }
        public static void main(String[] args)
        {
                Test14 t=new Test14("yes");
                System.out.println(t.i);
        }
}

//编译失败,因为父类中缺少空参数的构造函数
//或者子类应该通过Super语句指定要调用的父类中的构造函数。
作者: 小僧玄奘    时间: 2015-1-6 20:29
自己定义带参的构造函数一定要定义一个无参的构造函数!

作者: 小僧玄奘    时间: 2015-1-6 20:30
class Super
{
        int i=0;
        public Super(String s)
        {
                i=1;
        }
       public Super()
      {
       }
}
作者: bjuth    时间: 2015-1-6 20:36
子类第一行默认有super(),调用父类空参数的构造函数
  1. public Test(String s) {
  2. //super();//默认调用
  3.                 i = 2;
  4.         }
复制代码

如果父类没有构造函数时,默认会自动创建一个空参数的构造函数,这个问题也就不会出现
坏就坏在父类有一个有参数的构造函数
  1. public Super(String s) {
  2.                 i = 1;
  3.         }
复制代码

所以它就没有自动创建空参数的构造函数了
解决这个问题就是必须要传参数
  1. public Test(String s) {
  2.                 super(s);
  3.                 i = 2;
  4.         }
复制代码





作者: bjuth    时间: 2015-1-6 20:37
对 ls那个自己给父类写个空参数的构造函数也行:)
作者: 叫我王大锤    时间: 2015-1-6 21:21
楼上的楼上给解释完了- -。




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