我怎样才能让孩子忽视其父母认为有趣的事情并直接看到祖父母的乐趣?
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
答案 0 :(得分:6)
Ruby通常更容易通过组合而不是继承来获得这种行为。要实现包含您希望类具有的特定行为的Modules
。
但如果你绝对必须使用继承,你可以这样做:
class Child < Parent
def fun
GrandParent.instance_method(:fun).bind(self).call
# fun child stuff
end
end
这将完全符合它的说法。从GrandParent类中获取实例方法fun
,将其附加到当前实例对象self
并调用它。