L'ereditarietà è una relazione tra due classi. L'ereditarietà crea una relazione padre figlio tra le classi. È un meccanismo per il riutilizzo del codice e per consentire estensioni indipendenti del software originale tramite classi e interfacce pubbliche.Il vantaggio dell'ereditarietà è che le classi più in basso nella gerarchia ottengono le funzionalità di quelle più in alto, ma possono anche aggiungere funzionalità specifiche proprie .
In Ruby, una classe può ereditare solo da una singola altra classe. (cioè una classe può ereditare da una classe che eredita da un'altra classe che eredita da un'altra classe, ma una singola classe non può ereditare da molte classi contemporaneamente). La classe BasicObject è la classe genitore di tutte le classi in Ruby. I suoi metodi sono quindi disponibili per tutti gli oggetti a meno che non vengano esplicitamente sostituiti.
Ruby supera immediatamente l'ereditarietà di una singola classe utilizzando il mixin.
Proverò a spiegare con un esempio.
module Mux
def sam
p "I am an module"
end
end
class A
include Mux
end
class B < A
end
class C < B
end
class D < A
end
È possibile tracciare utilizzando class_name.superclass.name ed eseguire questo processo a meno che non si trovi BasicOject in questa gerarchia. BasicObject è una super classe di ogni classe. supponiamo di voler vedere l'albero della gerarchia di classe C.
C.superclass
=> B
B.superclass
=> A
A.superclass
=> Object
Object.superclass
=> BasicObject
Puoi vedere l'intera gerarchia della classe C. Punto da notare usando questo approccio non troverai moduli inclusi o anteposti nelle classi genitore.
C'è un altro approccio per trovare la gerarchia completa, inclusi i moduli. Secondo gli antenati di Ruby doc . Restituisce un elenco di moduli inclusi / anteposti in mod (inclusa la mod stessa).
C.ancestors
=> [C, B, A, Mux, Object, Kernel, BasicObject]
Qui, Mux e Kernel sono moduli.
http://rubylearning.com/satishtalim/ruby_inheritance.html
https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)
B.methods.sort
in irb. Forse qualcosa ti darà un'idea del nome del metodo che stai cercando.