我有一个类Parent
和一个类Child
(它是 的子类Parent
)。
Parent
有一个方法叫做aaaa
.Child
有一个方法叫做bbbb
.
这就是我想要实现的目标:
- 我想
bbbb
成为aaaa
. 如果我调用aaaa
一个Child
对象,它将运行aaaa
通常会执行的操作,以及bbbb
. - 调用
bbbb
将执行与上述相同的操作(运行aaaa
通常会执行的操作,然后执行 中的其他操作bbbb
)。
这就是我最终做的事情:
class Parent
def aaaa
print "A"
end
end
class Child < Parent
alias_method :original_aaaa,:aaaa
def bbbb
original_aaaa
print "B"
end
alias_method :aaaa,:bbbb
end
c = Child.new
c.aaaa # => AB
c.bbbb # => AB
它有效。我猜。但感觉真的很hackish。另外,这样做的一个缺点是,如果我想aaaa
在定义之前或之后使用相同的名称进行扩展bbbb
,事情就会变得有点奇怪。
有没有更简单的方法来实现这一点?