调用超类'超类方法?

时间:2012-05-04 04:40:34

标签: ruby

我怎样才能让孩子忽视其父母认为有趣的事情并直接看到祖父母的乐趣?

Child仍然从父级继承,但它只是不同意几种方法。

调用超类的超类的方法?

另外,如果我的孩子与父母不同意但是同意父母的父母,那么它是否被认为是糟糕的设计?

class Grandparent  
  def fun  
    #do stuff  
  end  
end

class Parent < Grandparent
  def fun
     super
     #parent does some stuff
  end

  def new_business
     #unrelated to my parent
  end
end

class Child < Parent  
  def fun
     super
     #child also does some stuff
  end

  def inherit_new_business
      new_business
      #stuff 
  end  
end

1 个答案:

答案 0 :(得分:6)

Ruby通常更容易通过组合而不是继承来获得这种行为。要实现包含您希望类具有的特定行为的Modules

但如果你绝对必须使用继承,你可以这样做:

class Child < Parent
  def fun
    GrandParent.instance_method(:fun).bind(self).call
    # fun child stuff
  end
end

这将完全符合它的说法。从GrandParent类中获取实例方法fun,将其附加到当前实例对象self并调用它。