Java 另一道构造器与构造器重载的题目

题目:

请写出以下程序的输出结果

public class ConstructorTest2 {
    public static void main(String[] args) {
        new B("test");
    }
}

class B extends A {
    public B(String s) {
        System.out.println(s);
    }

    public B(String s1, String s2) {
        this(s1 + s2 + "3");
    }

    public B() {
        this("4");
    }
}

class A {
    public A(String s) {
        System.out.println(s);
    }

    public A(String s1, String s2) {
        this(s1 + s2);
    }

    public A() {
        this("1", "2");
    }
}

输出结果为:

12
test

调用B(String s)的构造器时,隐含调用了super(),然后到了A()中继续调用A(String s1, String s2)再到A(String s),之后回到了B(String s)。

因此构造器调用this构造器的时候并不会调用子类的任何构造器。

原文地址:https://www.cnblogs.com/wuyou/p/3647833.html