Спадщина - це відношення між двома класами. Спадщина створює батьківські дочірні стосунки між класами. Це механізм для повторного використання коду та дозволу незалежних розширень оригінального програмного забезпечення через загальнодоступні класи та інтерфейси. Перевага успадкування полягає в тому, що класи, розташовані нижче в ієрархії, отримують функції тих, що знаходяться вище, але також можуть додавати свої власні особливості .
У Ruby клас може успадковувати лише від одного іншого класу. (тобто клас може успадковувати від класу, який успадковує від іншого класу, який успадковує від іншого класу, але один клас не може успадкувати від багатьох класів одночасно). Клас BasicObject - це батьківський клас усіх класів у 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. Зауважте, що за допомогою цього підходу ви не знайдете модулів, які включені або додані до батьківських класів.
Існує інший підхід до пошуку повної ієрархії, включаючи модулі. На думку предків Рубі-дока . Повертає список модулів, включених / доданих до мода (включаючи сам мод).
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-oriented_programming)
B.methods.sort
в irb. Можливо, щось підкаже вам назву методу, який ви шукаєте.