aviv.L:
ビルド色と抽象クラス内のロケーションオブジェクト、およびへの最善のアプローチは何である理由は?
アプローチ1
public abstract class Vehicle {
private int vehicleId;
private Color color; // color Object
private Location location; // location Object
public Vehicle() {
color = new Color();
location = new Location();
}
}
public class Car extends Vehicle {
private String type;
public Car() {
super();
}
}
アプローチ2
public abstract class Vehicle {
private int vehicleId;
protected Color color; // color Object
protected Location location; // location Object
public Vehicle(){}
}
public class Car extends Vehicle {
private String type;
public Car(){
super();
super.location = new Location();
super.color = new Color();
}
}
Themelis:
2 aproachesの違いは最初のものであることが抽象クラスでその状態をインスタンス化します。すべての相続は、その状態を継承しますので(ただしそのため、それにアクセスすることはできませんprivate
し、ありませんprotected
)。
第2のアプローチでは、オブジェクトの状態が取得された相続のコンストラクタ内で初期化し、おそらくあなたは、強制された宣言することcolor
とlocation
としてprotected
、あなたがその状態にアクセスすることができないであろうからです。
どちらのアプローチが良いですか?それは依存...あなたはすべての子供が共通の状態、最初のものを継承します。あなたはすべての子供が自身の状態、二を定義したい場合。