2

我怎样才能让孩子忽略父母认为有趣的事情,而直接进入祖父母的有趣观念?

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
4

1 回答 1

6

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

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

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

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

于 2012-05-04T05:42:07.793 回答