Vol*_*ort 1 ruby inheritance class
我有一个类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
Run Code Online (Sandbox Code Playgroud)
它有效.我猜.但它感到非常hackish.另外,这样做的一个缺点是,如果我想aaaa在定义之前或之后使用相同的名称进行扩展,那么bbbb事情会变得有些奇怪.
有没有更简单的方法来实现这一目标?
class Parent
def aaaa
print "A"
end
end
class Child < Parent
def aaaa
super
print "B"
end
alias bbbb :aaaa
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |