[英]Dynamic constructor calling in java?
假設我有4個類: A
, B
, SA
和SB
,其中B extends A
而SB extends SA
。
類A
具有以下構造函數:
private SA a;
public A() {
a = new SA();
}
顯然,當我為B
類調用構造函數並且由於B extends A
,也將調用B extends A
類A
構造函數。 但是在這種情況下,我希望A
的構造函數執行a = new SB();
而不是a = new SA();
。
是否有一種簡單的方法可以執行此操作而不更改A
和B
的公共接口?
只是有一個public
構造函數和一個protected
構造函數:
private SA a;
public A() {
this(new SA());
}
protected A(final SA a) {
this.a = a;
}
然后在B
:
public B() {
super(new SB());
}
是的。 例如 :
public A(YourEnum en) {
if (en == YourEnum.SA){
a = new SA();
} else {
a = new SB();
}
}
另外,根據您的實際需求,可以通過重載構造函數來完成此操作
public A(){
a = new SA();
}
public A(YourObjectYouNeed dataNeededForAnotherConstructor){
//doing initialization stuff
a = new SB();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.