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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//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语句指定要调用的父类中的构造函数。

5 个回复

倒序浏览
自己定义带参的构造函数一定要定义一个无参的构造函数!
回复 使用道具 举报
class Super
{
        int i=0;
        public Super(String s)
        {
                i=1;
        }
       public Super()
      {
       }
}
回复 使用道具 举报
子类第一行默认有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.         }
复制代码




回复 使用道具 举报
对 ls那个自己给父类写个空参数的构造函数也行:)
回复 使用道具 举报
楼上的楼上给解释完了- -。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马