为了账号安全,请及时绑定邮箱和手机立即绑定

java继承中的构造函数

java继承中的构造函数

墨色风雨 2021-06-29 13:15:22
public class Conininher {      public static void main(String[] args) {        Ba obj1=new Ba();      }}class Aa{    public Aa(){        this(10);        System.out.println("hello");    }    public Aa(int x){        System.out.println("hw r u");    }}class Ba extends Aa{    public Ba(){        this(5);        System.out.println("hii");    }    public Ba(int x){        System.out.println("bye");    }}为什么 Aa 中的 this(10) 不起作用?当类 Ba 的对象被创建时,首先调用 Ba 的默认构造函数,它依次调用 Aa 的默认构造函数,后者调用 Aa 的参数化构造函数。所以,我期待输出是 hello, hw ru, hii , bye。
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

为什么你期望在“hw r u”之前打印“hello”?


public Aa()

{

    this(10);

    System.out.println("hello");

}

电话


public Aa(int x)

{

    System.out.println("hw r u");

}

所以首先打印“hw r u”,然后才打印“hello”。


同样,“bye”打印在“hii”之前,因为


public Ba()

{

    this(5);

    System.out.println("hii");


}

电话


public Ba(int x)

{

    System.out.println("bye");

}

它打印“bye”,只有在它返回后,才会打印“hii”。


总结一下:


Ba obj1=new Ba();

电话


public Ba()

其中调用


public Ba(int x)

其中调用


public Aa()

其中调用


public Aa(int x)

打印“hw r u”


然后 public Aa() 打印“你好”


然后 public Ba(int x) 打印“再见”


最后 public Ba() 打印“hii”


查看完整回答
反对 回复 2021-07-07
  • 2 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信