从父类参数化构造函数中调用父类参数化构造函数中的子类构造函数

时间:2018-10-15 14:30:50

标签: java inheritance constructor virtual

因此,我有一个父类和一个从其继承的子类。父类具有默认的和参数化的构造函数。子类的默认构造函数略有不同,但是参数化构造函数中的代码完全相同。看起来像这样:

class Parent{
    public String A;
    public int B;

    public Parent(){
        A = "parent";
        B = 0;
    }

    public Parent(int v){
        this();
        B = v;
    }
}

class Child extends Parent{

    public Child(){
        A = "child";
        B = 0;
    }

    public Child(int v){
        this();
        B = v;
    }
}

public static void main(String args[]) {
    Child c = new Child(5);
    System.out.println("A: "+c.A); // > A: child
}

现在这一切都很好,但很无聊。如果我将Child(int v){}替换为以下内容:

public Child(int v){
    super(v);
}

我保存了1行,这很有趣,但是显然super(v)在其中调用了Parent的this()

public static void main(String args[]) {
    Child c = new Child(5);
    System.out.println("A: "+c.A); // > A: parent
}

是否可以让super()称为孩子的this()

我知道我可以做Class(){this(0)},但这没意思。

我想您可以通过在C ++中使用virtual关键字来做到这一点?无论如何,你怎么看?

0 个答案:

没有答案