黑马程序员技术交流社区

标题: 构造函数继承问题 [打印本页]

作者: \(^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
  1. 子类中的构造函数默认都是走的都是父类中无参构造函数,子类中的所有构造函数中默认第一行都是super( ),当然这个super()是隐式的,要想执行父类中有参数的构造函数,就得在子类中的第一行加上super(x),传个参数进去,这次就不能用隐式的了,要想调用父类有参构造函数,子类就得把super(x)写上并传参,不能藏着了再。Super语句必须写在子类构造函数中的 第一行


  2. class Father{
  3.         Father(){
  4.                 System.out.println("Father-------");
  5.         }
  6.         Father(int x){
  7.                 System.out.println("Father-------"+x);
  8.         }
  9. }

  10. class Child extends Father{
  11.        
  12.         Child(){
  13.                 //隐藏了super();
  14.                 System.out.println("Child-------");
  15.         }
  16.        
  17.         Child(int x){
  18.                 //隐藏了super();
  19.   super(x);//调用有参数的构造函数
  20.                 System.out.println("Child-------"+x);
  21.         }
  22.        
  23. }

  24. public  class TestExtends4 {
  25.         public static void main(String[] args) {
  26.                 Child c1 = new Child();//对象c1走的是父类的无参数的构造函数
  27.                 Child c2 = new Child(7);//对象c2走的也是父类的午餐的构造函数
  28.                
  29.         }

  30. }
复制代码





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