ここでは Java の初心者です。
Banana and Apple extend Fruit( FruitFruit はインスタンス化されないため、抽象クラスである可能性もあります)。
BananaAppleどちらも(大きく異なる)toString()メソッドを持っています。
どこかのメソッド -- 呼びましょう--がパラメータとしてprocessFruit(Fruit fruit)受け入れられ、ログの目的で実際に受信したメソッド (バナナまたはリンゴのいずれか) を呼び出します。どうすればいいですか?FruittoString()Fruit
私は fruit.toString() を実行し、実際の果物に基づいて Apple.toString() または Banana.toString() メソッドを実行したいと考えています。
やりたくないこと(リンゴやバナナだけでなく、果物もたくさんあるので):
- コードが同一であるため、との2 つの異なる
processFruitメソッドがあります。processFruit(Banana banana)processFruit(Apple apple) - 受け取った果物を Apple または Banana にダウンキャストし、その
toString()メソッドを呼び出します
他に方法があるはずですが、私には見えません。