A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© \(^o^)/ 中级黑马   /  2014-4-16 09:04  /  973 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 \(^o^)/ 于 2014-4-16 20:56 编辑

子类继承父类,子类中是否能指定调用父类中的哪个构造函数?

8 个回复

倒序浏览
根据super(...)的不同参数。
回复 使用道具 举报
子类的构造函数中默认第一行就在调用父类的无参构造函数super(),如要想要自己调用的话,可以根据参数来调用,但是调用一定要放在构造函数的第一行,同时super()和this()不能同时存在一个构造函数中

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
可以,
父类有空参数构造函数时,子类构造函数中可以显式调用父类空参数或其它构造函数,也可以不显式调用,这时系统会自动调用父类空参数构造函数;
父类中没有空参数构造函数时,子类构造函数(可能有多个)中必须有一个构造函数中用super关键字显式调用父类的一个带参数的构造函数。
回复 使用道具 举报
可以,根据super(……);
你不写的话,会自动生成一个无参的构造方法。
如果父类没有无参构造方法,子类必须写一个构造方法里面调用父类的构造方法。
回复 使用道具 举报
子类构造函数第一行写super(参数)
如果没写 就隐性的 有一个super()调用了父类无参的构造函数

如果父类没有无参的构造函数(也没有隐性的super()),子类的构造函数中必须要写super(参数)
回复 使用道具 举报
这种问题,你试一下不就知道了。
回复 使用道具 举报
子类构造方法中,使用super调用父类的无参构造方法,使用super(参数)调用父类有参构造方法,重点是super必须放在第一句
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马