黑马程序员技术交流社区
标题:
构造函数继承问题
[打印本页]
作者:
\(^o^)/
时间:
2014-4-16 09:04
标题:
构造函数继承问题
本帖最后由 \(^o^)/ 于 2014-4-16 20:56 编辑
子类继承父类,子类中是否能指定调用父类中的哪个构造函数?
作者:
sheng6699
时间:
2014-4-16 09:14
根据super(...)的不同参数。
作者:
月光海
时间:
2014-4-16 09:20
子类的构造函数中默认第一行就在调用父类的无参构造函数super(),如要想要自己调用的话,可以根据参数来调用,但是调用一定要放在构造函数的第一行,同时super()和this()不能同时存在一个构造函数中
作者:
chen_x
时间:
2014-4-16 09:20
可以,
父类有空参数构造函数时,子类构造函数中可以显式调用父类空参数或其它构造函数,也可以不显式调用,这时系统会自动调用父类空参数构造函数;
父类中没有空参数构造函数时,子类构造函数(可能有多个)中必须有一个构造函数中用super关键字显式调用父类的一个带参数的构造函数。
作者:
陈妙俊
时间:
2014-4-16 09:23
可以,根据super(……);
你不写的话,会自动生成一个无参的构造方法。
如果父类没有无参构造方法,子类必须写一个构造方法里面调用父类的构造方法。
作者:
osully
时间:
2014-4-16 09:26
子类构造函数第一行写super(参数)
如果没写 就隐性的 有一个super()调用了父类无参的构造函数
如果父类没有无参的构造函数(也没有隐性的super()),子类的构造函数中必须要写super(参数)
作者:
坏米饭
时间:
2014-4-16 09:59
这种问题,你试一下不就知道了。
作者:
四川男人
时间:
2014-4-16 10:30
子类构造方法中,使用super调用父类的无参构造方法,使用super(参数)调用父类有参构造方法,重点是super必须放在第一句
作者:
姜姗姗
时间:
2014-4-16 12:40
子类中的构造函数默认都是走的都是父类中无参构造函数,子类中的所有构造函数中默认第一行都是super( ),当然这个super()是隐式的,要想执行父类中有参数的构造函数,就得在子类中的第一行加上super(x),传个参数进去,这次就不能用隐式的了,要想调用父类有参构造函数,子类就得把super(x)写上并传参,不能藏着了再。Super语句必须写在子类构造函数中的 第一行
class Father{
Father(){
System.out.println("Father-------");
}
Father(int x){
System.out.println("Father-------"+x);
}
}
class Child extends Father{
Child(){
//隐藏了super();
System.out.println("Child-------");
}
Child(int x){
//隐藏了super();
super(x);//调用有参数的构造函数
System.out.println("Child-------"+x);
}
}
public class TestExtends4 {
public static void main(String[] args) {
Child c1 = new Child();//对象c1走的是父类的无参数的构造函数
Child c2 = new Child(7);//对象c2走的也是父类的午餐的构造函数
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2