La herencia es una relación entre dos clases. La herencia crea una relación padre-hijo entre clases. Es un mecanismo para la reutilización del código y para permitir extensiones independientes del software original a través de clases e interfaces públicas. El beneficio de la herencia es que las clases inferiores en la jerarquía obtienen las características de las superiores, pero también pueden agregar características específicas propias. .
En Ruby, una clase solo puede heredar de otra clase. (es decir, una clase puede heredar de una clase que hereda de otra clase que hereda de otra clase, pero una sola clase no puede heredar de muchas clases a la vez). La clase BasicObject es la clase padre de todas las clases en Ruby. Por lo tanto, sus métodos están disponibles para todos los objetos a menos que se anulen explícitamente.
Ruby supera la herencia de una sola clase de una vez usando el mixin.
Intentaré explicarlo con un ejemplo.
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
Puede rastrear usando class_name.superclass.name y hacer este proceso a menos que encuentre BasicOject en esta jerarquía. BasicObject es una superclase para todas las clases. supongamos que queremos ver el árbol de jerarquía de la clase C.
C.superclass
=> B
B.superclass
=> A
A.superclass
=> Object
Object.superclass
=> BasicObject
Puede ver toda la jerarquía de la clase C. Apunte a tener en cuenta que con este enfoque no encontrará módulos que estén incluidos o antepuestos en las clases principales.
Existe otro enfoque para encontrar la jerarquía completa, incluidos los módulos. Según los antepasados de Ruby doc . Devuelve una lista de módulos incluidos / antepuestos en el mod (incluido el propio mod).
C.ancestors
=> [C, B, A, Mux, Object, Kernel, BasicObject]
Aquí, Mux y Kernel son módulos.
http://rubylearning.com/satishtalim/ruby_inheritance.html
https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)
B.methods.sort
esté atascado así, intente siempre en irb. Tal vez algo le dé una pista sobre el nombre del método que busca.