Vererbung ist eine Beziehung zwischen zwei Klassen. Vererbung erstellt eine übergeordnete untergeordnete Beziehung zwischen Klassen. Es ist ein Mechanismus zur Wiederverwendung von Code und zur Ermöglichung unabhängiger Erweiterungen der ursprünglichen Software über öffentliche Klassen und Schnittstellen. Der Vorteil der Vererbung besteht darin, dass Klassen in der unteren Hierarchie die Funktionen der höheren Klassen erhalten, aber auch eigene spezifische Funktionen hinzufügen können .
In Ruby kann eine Klasse nur von einer anderen Klasse erben. (dh eine Klasse kann von einer Klasse erben, die von einer anderen Klasse erbt, die von einer anderen Klasse erbt, aber eine einzelne Klasse kann nicht von vielen Klassen gleichzeitig erben). Die BasicObject-Klasse ist die übergeordnete Klasse aller Klassen in Ruby. Seine Methoden stehen daher allen Objekten zur Verfügung, sofern sie nicht ausdrücklich überschrieben werden.
Ruby überwindet die Einzelklassenvererbung sofort mithilfe des Mixins.
Ich werde versuchen, mit einem Beispiel zu erklären.
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
Sie können mithilfe von class_name.superclass.name nachverfolgen und diesen Vorgang ausführen, es sei denn, Sie haben BasicOject in dieser Hierarchie gefunden. BasicObject ist eine Superklasse für jede Klasse. Nehmen wir an, wir möchten den Hierarchiebaum der Klasse C sehen.
C.superclass
=> B
B.superclass
=> A
A.superclass
=> Object
Object.superclass
=> BasicObject
Sie können die gesamte Hierarchie der Klasse C sehen. Beachten Sie, dass Sie bei diesem Ansatz keine Module finden, die in den übergeordneten Klassen enthalten oder vorangestellt sind.
Es gibt einen anderen Ansatz, um eine vollständige Hierarchie einschließlich Modulen zu finden. Laut Ruby Doc Vorfahren . Gibt eine Liste der in mod enthaltenen / vorangestellten Module zurück (einschließlich mod selbst).
C.ancestors
=> [C, B, A, Mux, Object, Kernel, BasicObject]
Hier sind Mux und Kernel Module.
http://rubylearning.com/satishtalim/ruby_inheritance.html
https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)
B.methods.sort
in irb. Vielleicht gibt Ihnen etwas einen Hinweis auf den Methodennamen, nach dem Sie suchen.