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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心的方向 中级黑马   /  2013-11-23 21:30  /  1451 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码求解:
public class Pet
{
        String name = "huahua";
       
        public Pet(String name)
        {
                this.name = name;
        }
}
class Dog extends Pet
{
        String name = "keke";
        public Dog(String name)
        {
                this.name = name;
        }
}
为什么报错啊?

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 今天加分已达上限!请稍候再试!.

查看全部评分

3 个回复

倒序浏览
子类的构造函数中默认先构造父类
super();
因为父类的构造函数有参数,所以C:\Users\s\Desktop\QQ图片20131123225424.jpg

QQ图片20131123225424.jpg (42.73 KB, 下载次数: 63)

QQ图片20131123225424.jpg

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 下次代码要放代码框里哦~

查看全部评分

回复 使用道具 举报
因为子类的构造函数中如果没有显示指定调用父类或者自身的哪一个构造方法,默认的第一句话都是:super();,也就是调用父类的空参构造方法。Dog类的父类Pet类没有空参构造方法,所以就会报错了。
回复 使用道具 举报
为了实现继承关系,子类构造函数都会先隐藏一句super();
在没有复写的情况下都会调用父类空参数构造函数。
可是没有中并没有这种构造函数,
并且还声明了继承关系,所以出现了错误
可以在父类中加上一句public Pet(){}来验证一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马