Animal というクラスと AnimalTrainer というインターフェースがあるとします。
public interface AnimalTrainer
{
void trainAnimal(Animal animal);
}
ここで、Lion のみをトレーニングする実装を作成したい場合に問題が発生します。たとえば、Lion が Animal を拡張する場合です。
public class LionTrainer implements AnimalTrainer
{
public void trainAnimal(Lion lion)
{
// code
}
}
しかし、これはうまくいきません。上記の LionTrainer 実装が可能になるように、どうすれば AnimalTrainer で trainAnimal メソッドを定義できますか? または、LionTrainer の実装を変更する必要がありますか?