Наследование - это отношение между двумя классами. Наследование создает отношения родитель-потомок между классами. Это механизм для повторного использования кода и позволяющий независимые расширения исходного программного обеспечения через общедоступные классы и интерфейсы. Преимущество наследования состоит в том, что классы, расположенные ниже по иерархии, получают функции тех, которые находятся выше, но также могут добавлять определенные собственные функции. .
В Ruby класс может наследовать только от одного другого класса. (т.е. класс может наследовать от класса, который наследуется от другого класса, который наследуется от другого класса, но один класс не может наследовать сразу от многих классов). Класс BasicObject является родительским классом для всех классов в Ruby. Следовательно, его методы доступны для всех объектов, если они явно не переопределены.
Ruby сразу преодолевает наследование одного класса, используя миксин.
Попробую пояснить на примере.
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
Вы можете выполнить трассировку с помощью class_name.superclass.name и выполнить этот процесс, если вы не нашли BasicOject в этой иерархии. BasicObject - это суперкласс для всех классов. Давайте посмотрим, что предположим, что мы хотим увидеть дерево иерархии класса C.
C.superclass
=> B
B.superclass
=> A
A.superclass
=> Object
Object.superclass
=> BasicObject
Вы можете увидеть всю иерархию класса C. Обратите внимание, что при таком подходе вы не найдете модулей, которые включены или добавлены в родительские классы.
Есть еще один подход к поиску полной иерархии, включая модули. По словам предков Ruby doc . Возвращает список модулей, включенных / добавленных в мод (включая сам мод).
C.ancestors
=> [C, B, A, Mux, Object, Kernel, BasicObject]
Здесь Mux и Kernel - это модули.
http://rubylearning.com/satishtalim/ruby_inheritance.html
https://en.wikipedia.org/wiki/Inheritance_(object-oriated_programming)
B.methods.sort
irb. Может быть, что-то подскажет, какое имя метода вы ищете.