継承は、2つのクラス間の関係です。継承により、クラス間に親子関係が作成されます。これはコードの再利用のためのメカニズムであり、パブリッククラスとインターフェイスを介して元のソフトウェアの独立した拡張を可能にします。継承の利点は、階層の下位のクラスが上位のクラスの機能を取得するだけでなく、独自の特定の機能を追加できることです。 。
Rubyでは、クラスは他の1つのクラスからのみ継承できます。(つまり、クラスは、別のクラスから継承する別のクラスから継承するクラスから継承できますが、1つのクラスが一度に多くのクラスから継承することはできません)。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
この階層でBasicOjectが見つからない限り、class_name.superclass.nameを使用してトレースし、このプロセスを実行できます。BasicObjectは、すべてのクラスのスーパークラスです。クラスCの階層ツリーを見たいとしましょう。
C.superclass
=> B
B.superclass
=> A
A.superclass
=> Object
Object.superclass
=> BasicObject
クラスCの階層全体を見ることができます。このアプローチを使用すると、親クラスに含まれている、または先頭に追加されているモジュールは見つかりません。
モジュールを含む完全な階層を見つけるための別のアプローチがあります。Rubyのドキュメントの祖先によると。modに含まれる/追加されるモジュールのリストを返します(mod自体を含む)。
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-ientified_programming)
B.methods.sortirbで試してください。たぶん何かがあなたが探しているメソッド名の手がかりを与えるでしょう。