もう少しスマートなやり方があるような気が。
class Foo def initialize @val = 'foo val' end def func @val end end class Bar < Foo def initialize @val = 'bar val' end def func 'Bar#func' end end foo = Foo.new bar = Bar.new puts bar.func puts Foo.instance_method(:func).bind(bar).call # レシーバはbar