猿问

java继承中的构造函数

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。


墨色风雨
浏览 152回答 2
2回答

凤凰求蛊

为什么你期望在“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”
随时随地看视频慕课网APP

相关分类

Java
我要回答