public class A{
List m;
public A(int a, int b) {m=new List(); ...}
}
public class B : A{
List a;
List b;
public B(){...} //constructor1
public B(int a, int b) : base(a,b){...} //constructor2
}
我的问题是我需要在类B中初始化列表a和b。如果我将它们放在构造函数1中,我如何在构造函数2中调用构造函数1?我不想再次在构造函数2中重写初始化语句。谢谢!
答案 0 :(得分:5)
听起来,你只是在心理上向后倾斜。我想你想做的是:
public class B : A {
List _a;
List _b;
public B(int a, int b) : base(a, b) {
// this calls the base constructor
// presumably you're initializing _a and _b in here?
_a = new List();
_b = new List();
}
// let x and y be your defaults for a and b
public B() : this(x, y) {
// this calls the this(a, b) constructor,
// which in turn calls the base constructor
}
}
答案 1 :(得分:1)
将它们放在constructor2中并使constructor1调用构造函数2?或者在内联而不是在构造函数中初始化它们?有很多方法可以给这只猫上皮。
答案 2 :(得分:1)
如果您有必须在多个构造函数中执行的初始化活动,请将它们放入单独的私有方法中,并从需要这些活动的任何构造函数中调用该方法。我不明白父的构造函数与它有什么关系,或者你为什么要从另一个构造函数调用它。