2

如何在继承链中选择特定的 a 方法调用?

class A
  def boo; puts "A:Boo"; end
end

class B < A
  def boo; super; puts "B:Boo"; end
end

class C < B
  def boo; self.A.boo(???); puts "C:Boo"; end
end

因此输出将是 A:Boo, C:Boo

TIA,

-丹尼尔

4

1 回答 1

5

你可以做

class C < B
  def boo
    A.instance_method(:boo).bind(self).call
    puts "C:Boo"
  end
end

但是,如果您需要这个,这通常表明您应该重新考虑您的设计。特别是如果 C 需要 A 的 实现boo,也许 B 不应该覆盖它。

于 2010-06-29T19:19:28.673 回答