L'ereditarietà in Ruby
Come sappiamo, Ruby è un linguaggio che ha pieno supporto alla OOP.
Oggi vediamo come implemente il concetto di ereditarietà.
Partiamo da questo semplice script:
class Animale
def verso
"Il mio verso!"
end
end
class Cane < Animale
end
class Gatto < Animale
end
c = Cane.new
g = Gatto.new
puts c.verso
puts g.verso
Con il simbolo < impostiamo l'ereditarietà della classe; per il resto è un esempio abbastanza semplice.
Facciamo un altro esempio:
class Animale
def verso
"Il mio verso!"
end
end
class Cane < Animale
attr_accessor :nome
def initialize(nome)
self.nome = nome
end
def verso
"Il cane #{self.nome} sta abbaiando"
end
end
class Gatto < Animale
end
c = Cane.new("Tj")
g = Gatto.new
puts c.verso
puts g.verso
Qui abbiamo impostiamo il nome al cane, e facciamo l'override del metodo verso.
Infatti, se paragonate i due output, vedrete che saranno diversi.
Anche in Ruby, inoltre, abbiamo la direttiva super, che ci consente di accedere al metodo della classe base; guardate questo esempio e il suo output:
class Animale
def verso
"Ciao dall'animale "
end
end
class Cane < Animale
def verso
super + "Cane"
end
end
c = Cane.new
puts c.verso
Ci fermiamo qua, anche se ovviamente Ruby supporta concetti più avanzati.
Enjoy!
ruby oop ereditarieta
Commentami!