您的位置:首页 > 其它

Implicit super constructor xx() is undefined for default constructor

2015-04-24 00:24 483 查看
因为父类定义了一个有参的构造函数,此时编译器就不会调用默认的无参构造函数。

当子类继承时,必须在自己的构造函数显式调用父类的构造函数,才能确保子类在初始化前父类会被实例化。

如果你父类中有无参的构造函数,子类就不会强制要求调用,编译器会默认帮你调用父类的构造函数。

父类

classPerson{

protectedStringname;

protectedintage;

//你已经定义了自己的构造函数,此时编译器不会为你创建默认的构造函数

publicPerson(Stringname,intage){

this.name=name;

this.age=age;

}

publicvoidprint(){

System.out.println("Name:"+name+"/nAge:"+age);

}

}


子类

classStudentextendsPerson{

publicStudent(){//子类构造函数

//super();不行,因为你的父类没有无参的构造函数


super("a",1);

//显示调用父类的构造函数,而且必须是第一行调用

}

}

classTest{

publicstaticvoidmain(Stringargs[]){

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐