讓我們說,我有一個抽象類A.在那裏,我得到了一些內部類喜歡這裏:抽象類的構造函數的繼承對象
public abstract class A
{
public InnerOne x;
public InnerTwo y;
public A(){
this.x = new InnerOne();
this.y = new InnerTwo();
}
public class InnerOne
{
public virtual double value(){
return 0;
}
}
public class InnerTwo
{
public virtual double value(){
return 0;
}
}
}
然後我得到了它的兒童像這樣的:
public class B: A
{
public B():base(){
}
public class InnerOne: A.InnerOne
{
public override virtual double value(){
return 100;
}
}
public class InnerTwo: A.InnerTwo
{
public override virtual double value(){
return 100;
}
}
}
所以我認爲當我打電話B
這樣的構造函數時,我會通過創建它的內部類實例來初始化x
和y
。但實際上並不是這樣的。當我打電話給vaule
函數時,它返回零。
A newobject = new B();
var bv1 = B.x.value();
var bv2 = B.y.value();
有沒有辦法迫使B
類來初始化它的x
和y
領域由它的內部類對象(不與父抽象類對象),而無需重新編寫它的構造?
爲什麼你不希望修改乙構造? – 2015-03-25 11:34:59
有沒有理由不能或不想簡單地在'B'的構造函數中賦值它們? – juharr 2015-03-25 11:35:01
@MichałKomorowski和juharr如果裏面有太多的課程怎麼辦? – DanilGholtsman 2015-03-25 11:37:34