Dire che definisco un'interfaccia IAnimal
che ha un metodo virtuale puro (astratto) chiamato mangiare in questo modo:
class IAnimal
{
virtual void eat(Food*) = 0;
};
In futuro erediterò la forma IAnimal
e creo diversi animali. e alla fine scopro che alcuni animali hanno bisogno non solo di cibo da mangiare ma anche di altre cose. Dì nel mio contesto, (è facile immaginare che sia un gioco), Dog
s può mangiare se c'è un Food
e un Plate
. Man
s può mangiare se c'è un Food
, Plate
, Table
e Chair
. Significa che è sbagliato utilizzare ereditare da IAnimal
? Possiamo dire che Dog
e Man
non sono animali poiché non puoi usarli in modo intercambiabile.