我怎样才能让孩子忽视其父母认为有趣的东西,直接去看祖父母的乐趣?
孩子仍然继承父母,但它只是不同意几种方法.
调用超类的超类方法?
此外,如果我的孩子不同意其父母但同意父母的父母,那么它是否被认为是糟糕的设计?
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)
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并调用它.
| 归档时间: |
|
| 查看次数: |
1384 次 |
| 最近记录: |