Ridefinizione dei metodi
In una sottoclasse, possiamo cambiare il comportamento delle istanze attraverso la ridefinizione dei metodi della superclasse.
ruby> class Umano
| def identificazione
| print "Sono una persona."
| end
| def biglietto_treno(anni)
| if anni < 12
| print "Biglietto ridotto.";
| else
| print "Biglietto normale.";
| end
| end
| end
nil
ruby> Umano.new.identificazione
Sono una persona.
nil
ruby> class Studente1<Umano
| def identificazione
| print "Sono uno studente."
| end
| end
nil
ruby> Studente1.new.identificazione
Sono uno studente.
nil
Supponiamo di voler migliorare il metodo
identificazione della superclasse invece di
sostituirlo. Per farlo possiamo usare
super.
ruby> class Studente2<Umano
| def identificazione
| super
| print "Sono anche uno studente."
| end
| end
nil
ruby> Studente2.new.identificazione
Sono una persona.
Sono anche uno studente.
nil
super ci permette di passare degli argomenti al
metodo originale. E' cosa nota che ci sono due tipi di
persone...
ruby> Disonesto<Umano
| def biglietto_treno(anni)
| super(11) # vogliamo un biglietto economico.
| end
| end
nil
ruby> Disonesto.new.biglietto_treno(25)
Biglietto ridotto.
nil
ruby> class Onesto<Umano
| def biglietto_treno(anni)
| super(anni) # passa l'argomento che gli abbiamo dato
| end
| end
nil
ruby> Onesto.new.biglietto_treno(25)
Biglietto normale.
nil
Ti potrebbe interessare anche
commenta la notizia
C'è 1 commento
ordina per
primi
ultimi
+ apprezzati
Hai dubbi su questo articolo?