Comportamenti diversi per uno stesso metodo

  • Per invocare un metodo il compilatore deve sapere esattamente quale oggetto sta maneggiando
  • Proviamo a fare un altro esempio:
    • animale domestico è una classe generica, della quale non ci interessa costruire individui (istanze)
    • Gli individui potranno essere, ad esempio, cani
    • Potremmo a questo punto derivare dai cani la classe dei cani da riporto
    • Risulta evidente che un cane può essere un cane da riporto, oppure un cane normale
    • Possiamo quindi avere istanze sia della classe che della superclasse
  • In questa circostanza ci risulterà impossibile eseguire un'operazione su tutti i cani (da riporto e non), nel caso i cani da riporto ridefiniscano il metodo che dobbiamo usare
  • Se faremo un ciclo su tutti i cani il compilatore genererà delle chiamate al metodo di cane, comunque, anche per i cani da riporto, visto che utilizzeremo un puntatore a cane per accedere ai singoli cani

© Ing. Stefano Salvi - All rights reserved