黑马程序员技术交流社区

标题: 代码求解 [打印本页]

作者: 心的方向    时间: 2013-11-23 21:30
标题: 代码求解
代码求解:
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;
        }
}
为什么报错啊?


作者: 1014917278    时间: 2013-11-23 22:55
子类的构造函数中默认先构造父类
super();
因为父类的构造函数有参数,所以C:\Users\s\Desktop\QQ图片20131123225424.jpg

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

QQ图片20131123225424.jpg

作者: 中关村阿旺    时间: 2013-11-23 23:00
因为子类的构造函数中如果没有显示指定调用父类或者自身的哪一个构造方法,默认的第一句话都是:super();,也就是调用父类的空参构造方法。Dog类的父类Pet类没有空参构造方法,所以就会报错了。
作者: 忘记了    时间: 2013-11-24 01:18
为了实现继承关系,子类构造函数都会先隐藏一句super();
在没有复写的情况下都会调用父类空参数构造函数。
可是没有中并没有这种构造函数,
并且还声明了继承关系,所以出现了错误
可以在父类中加上一句public Pet(){}来验证一下





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