所以我們可以說我有A類,它是這樣定義的:如何處理繼承鏈中的默認值而不寫入重複代碼?
public class A{
private int x;
public A(){
this(13);
}
public A(int x){
this.x = x;
}
}
然後,我有一個B類需要實現Y,所以是這樣的:
public class B extends A{
private int y;
public B(){
}
public B(int x){
this(x, 0);
}
public B(int x, int y){
super(x);
this.y = y;
}
}
我的問題是:我在做什麼public B()
?我打電話給super(),以便A分配默認值/做任何事情,然後在該構造函數中執行另一個this.y = y
,或者我打電話給this(13)
?
這兩種方法似乎都需要一些不好的做法。一個人在兩個地方寫this.y = y
。另一個需要我重複默認值,並且每次更改默認值時都需要更改。
您不需要做任何事情。 'B()'隱式調用'super()',所以'A()'被調用。 –
但是如果我什麼都不做,我仍然需要給y一個默認值,這就是問題所在。我最終不得不這樣做,再次,當我已經做到了。 – WinterDev
哦,對。抱歉。沒有發現你正在分配'y'。所以,你只需要在'B()'中分配'y'。 –