调用超类'超类方法?

MxL*_*evs 2 ruby

我怎样才能让孩子忽视其父母认为有趣的东西,直接去看祖父母的乐趣?

孩子仍然继承父母,但它只是不同意几种方法.

调用超类的超类方法?

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

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
Run Code Online (Sandbox Code Playgroud)

TCo*_*ple 6

Ruby通常更容易通过组合而不是继承来获得这种行为.要实现这一目标,Modules其中包含您希望课程具有的特定行为.

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

class Child < Parent
  def fun
    GrandParent.instance_method(:fun).bind(self).call
    # fun child stuff
  end
end
Run Code Online (Sandbox Code Playgroud)

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