Supponiamo di avere una classe, "Animale" e sottoclassi, "Gatto" e "Cane".Perché dobbiamo dichiarare metodi virtuali come tali
Diciamo che vogliamo consentire a "Gatto" e "Cane" di fare rumore (gatto: "meow" - cane: "woof") quando passiamo i loro oggetti in una funzione intermedia per qualsiasi "Animale".
Perché dobbiamo utilizzare un metodo virtuale per farlo? Non potremmo semplicemente creare Animal-> makeNoise() senza definire un metodo virtuale in "Animal"? Poiché "Gatto" e "Cane" sono entrambi animali, non sarebbe chiaro che "makeNoise()" si riferisce all'Animale che è stato passato alla funzione?
È solo una questione di sintassi o qualcosa di più? Sono abbastanza sicuro che in Java non dobbiamo farlo.
@Antonio, le classi di base virtuali non hanno assolutamente nulla a che fare con i metodi virtuali. È solo uno dei casi in cui C++ fa un ottimo lavoro abusando di una parola chiave per diversi scopi. –
Cosa succede se hai passato un topo che non aveva alcun metodo 'makeNoise()'. –