Ruby:在子类中调用父类的覆盖方法

前端之家收集整理的这篇文章主要介绍了Ruby:在子类中调用父类的覆盖方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
说我有B类派生自A类

有可能这样调用A的覆盖方法吗?

class A
  def method1
  end
  def method2
  end
end

class B < A
  def method1
  ### invoke method2 of class A is what I want to do here
  end
  def method2
  end
end

#不完全与How do I call an overridden parent class method from a child class?重复,但我们似乎也想做同样的事情.

解决方法

我假设B应该从A继承,你只是在你的示例代码中打错了.如果不是这样,那你就没办法去做.

否则,您可以通过将A的method2实例方法绑定到当前的B对象并像下面这样调用

class A
  def method1
  end
  def method2
  end
end

class B < A
  def method1
    A.instance_method(:method2).bind(self).call
  end
  def method2
  end
end

注意,除非你真的需要,否则你不应该拉出这样的大黑魔法枪.在大多数情况下,重新设计您的类层次结构,以便您不需要这样做是更好的选择.

原文链接:https://www.f2er.com/ruby/266225.html

猜你在找的Ruby相关文章