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 回答
![?](http://img1.sycdn.imooc.com/533e4c0500010c7602000200-100-100.jpg)
凤凰求蛊
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”
添加回答
举报
0/150
提交
取消