【Ruby3.x】Method::super_method()メソッドの使い方
super_methodメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
super_methodメソッドは、あるMethodオブジェクトが指し示すメソッドが、その親クラスで定義されている同名のメソッドをオーバーライドしている場合に、その親クラスのメソッドを表すMethodオブジェクトを返します。
Rubyのクラスは継承によって機能を拡張でき、子クラスが親クラスのメソッドを再定義(オーバーライド)することが可能です。Methodクラスのインスタンスは特定のメソッドへの参照ですが、super_methodを用いることで、その参照しているメソッドの継承元にあたる親クラスの定義を確認できます。
このメソッドは、現在のメソッドがオーバーライドしている直接の親クラスのメソッドをMethodオブジェクトとして返します。これにより、プログラム中でメソッドがどのように継承され、どのクラス階層で定義が変更されたのかを動的に追跡できるようになります。
もし現在のメソッドが親クラスの同名メソッドをオーバーライドしておらず、そのクラスで初めて定義されたものである場合、または親クラスに同名のメソッドが存在しない場合は、nilを返します。この機能は、メソッドの継承元やオーバーライド状況を動的に調査したい場合に役立ちます。
構文(syntax)
1class Parent 2 def example_method 3 end 4end 5 6class Child < Parent 7 def example_method 8 end 9end 10 11child_method_object = Child.instance_method(:example_method) 12parent_method_object = child_method_object.super_method
引数(parameters)
引数なし
引数はありません
戻り値(return)
Method or nil
このメソッドは、現在のメソッドを呼び出した元のメソッド(スーパークラスの同名メソッドなど)を表すMethodオブジェクト、または元のメソッドが存在しない場合はnilを返します。