黑马程序员技术交流社区

标题: 子类可以直接使用父类的非空参构构函数? [打印本页]

作者: 谢洋    时间: 2013-3-2 10:24
标题: 子类可以直接使用父类的非空参构构函数?
本帖最后由 谢洋 于 2013-3-4 00:12 编辑

如果子类中都没有复写父类构造函数,子类在创建对象时可以直接使用父类的非空参构构函数?
为什么?
作者: 刘圣繁    时间: 2013-3-2 10:44
父类:
class father{
String name;
int age;
father(){}

father(String name,int age){
this.name=name;
this.age=age;
}

}
子类::
class Son{
String id;
son( String name,int age,String id){
super(name,age);
this.id=id;
}
}
主类:
class MainClass{
public static void main(String[]args){
Son son=new Son("wanglin",18,"10001");//子类在创建对象的时候就调用了父类的非空构造函数}
}
作者: 罗海云    时间: 2013-3-2 10:53
没有复写构造函数之说...假如你想用父类的非空构造函数..就这样..例如: super(a,b);   记住,一定要写在第一行.
作者: 胡勇敏    时间: 2013-3-2 11:08
构造函数不存在覆写的说法,子类的构造函数在默认的情况下就是可以调用父类的构造函数的,至于调用哪个就是看参数而定的,用super来调用。
作者: 黑马-小龙    时间: 2013-3-3 18:33
首先你得明白,继承的概念。然后 明白子类的实例化过程。这样和你说吧,子类创建对象会先创建父类的对象。创建父类的对象当然会调用父类的构造函数。明白吗
作者: 王海龙2013    时间: 2013-3-3 19:17
继承包括父类的属性变量,子类构造函数初始化时要先去调用父类的构造函数进行初始化。默认构造函数是空参数的,因此默认调用也是空参数的。要调用指定类型的要在第一行super(指定类型)才能调用,如果父类没有空参数构造函数,子类也没有调用指定构造函数会报错的。建议你再看一遍毕老师对继承的课。应该就能理解了。
作者: 王海龙2013    时间: 2013-3-3 19:18
手机回个真累




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