親クラスのメソッド呼出
Rubyの勉強
某掲示板で質問した内容、自身でオーバーライドしたメソッドの親クラスのオリジナルメソッドを呼び出す方法
classBのインスタンスで通常メソッドfooを呼ぶと自身でオーバーライドされたメソッドが実行されてしまうので、オーバーライド前にaliasしておき、そちらを呼ぶことで実現する。
関連情報:
class A def foo puts "foo in A" end end class B<A alias :foo_A :foo # def fooよりも前にあることがポイント def foo super puts "foo in B" end def bar foo_A # class Aのメソッドfooが呼ばれる puts "bar in B" end end B.new.bar #=> foo in A #=> bar in B
こんな方法も(まだ理解不能)
def bar a_foo_unbound = self.class.superclass.instance_method(:foo) a_foo = a_foo_unbound.bind(self) a_foo.call end