Herança é uma relação entre duas classes. A herança cria um relacionamento pai-filho entre as classes. É um mecanismo para reutilização de código e para permitir extensões independentes do software original por meio de classes e interfaces públicas. O benefício da herança é que as classes mais baixas na hierarquia obtêm os recursos das mais altas, mas também podem adicionar recursos específicos próprios .
Em Ruby, uma classe só pode herdar de uma única outra classe. (ou seja, uma classe pode herdar de uma classe que herda de outra classe que herda de outra classe, mas uma única classe não pode herdar de muitas classes de uma vez). A classe BasicObject é a classe pai de todas as classes em Ruby. Seus métodos estão, portanto, disponíveis para todos os objetos, a menos que sejam explicitamente substituídos.
Ruby supera a herança de classe única de uma vez usando o mixin.
Vou tentar explicar com um exemplo.
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
Você pode rastrear usando class_name.superclass.name e fazer este processo, a menos que tenha encontrado BasicOject nesta hierarquia. BasicObject é superclasse para todas as classes. vamos supor que queremos ver a árvore hierárquica da classe C.
C.superclass
=> B
B.superclass
=> A
A.superclass
=> Object
Object.superclass
=> BasicObject
Você pode ver toda a hierarquia da classe C. É importante observar que, ao usar essa abordagem, você não encontrará módulos incluídos ou anexados nas classes pai.
Existe outra abordagem para encontrar a hierarquia completa, incluindo módulos. De acordo com ancestrais Ruby doc . Retorna uma lista de módulos incluídos / prefixados no mod (incluindo o próprio mod).
C.ancestors
=> [C, B, A, Mux, Object, Kernel, BasicObject]
Aqui, Mux e Kernel são Módulos.
http://rubylearning.com/satishtalim/ruby_inheritance.html
https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)
B.methods.sort
no irb. Talvez algo lhe dê uma pista sobre o nome do método que você procura.