我有一个班级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
,事情就会变得有些奇怪。
有没有更简单的方法来实现这个目标?
答案 0 :(得分:5)
class Parent
def aaaa
print "A"
end
end
class Child < Parent
def aaaa
super
print "B"
end
alias bbbb :aaaa
end