因此,我有一个父类和一个从其继承的子类。父类具有默认的和参数化的构造函数。子类的默认构造函数略有不同,但是参数化构造函数中的代码完全相同。看起来像这样:
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
关键字来做到这一点?无论如何,你怎么看?