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