疑いの余地がない場合もありますが、非常に難しい決断になる場合もあります。いくつかの例を示しましょう。
継承:
public class Employee{
public void goToWork(){
//...
}
}
public class Lawyer extends Employee{
//private Employee body;
/*public void goToWork(){
body.goToWork(); // Does that make any sense?
}*/
}
委任:
public class Lights{
public void turnOn(){
//...
}
}
public class Car{ //public class Car extends Lights? Nice car then...
private Lights light;
public void turnOnLights(){
light.turnOn();
}
}
どれ?
public class Field{
public void grow(Seeds s){
//...
}
}
public class Plantation{ //extends Field{ makes sense too
private Field field;
private Worker[] workers;
private Vehicle[] tractors;
public void grow(Seeds s){
//...
field.grow(s);
}
}
では、継承と委任のどちらも受け入れられ、それぞれに長所と短所がある場合に、どちらかを選択するのに役立つヒントはありますか? 選択はランダムで、完全にプログラマーの気分に基づいていますか?