クラス「Animal」とサブクラス「Cat」と「Dog」があるとします。仮想メソッドをそのように宣言しなければならない理由
「動物」の中間関数にオブジェクトを渡すときに、「Cat」と「Dog」の両方でノイズを発生させたいとします(cat: "meow" - dog: "woof")。
なぜこれを行うには仮想メソッドを使用する必要がありますか? "Animal"で仮想メソッドを定義せずにAnimal-> makeNoise()を実行できませんでしたか? "Cat"と "Dog"はどちらも動物であるため、 "makeNoise()"は関数に渡されたAnimalを参照していることは明らかですか?
これは単なる文法などの問題ですか?私はJavaでこれを行う必要はないと確信しています。
@Antonioでは、仮想基本クラスは仮想メソッドとはまったく関係ありません。これは、C++がいくつかの目的でキーワードを悪用するうえで非常にうまく機能するケースの1つです。 –
'makeNoise()'メソッドを持たないラットを渡すとどうなりますか? –