有这样一个类
class A
class B
def b
puts "A::B#b"
end
end
def a
B.new.b
end
end
我想继承 A,并重写 class B 里面的方法 A::B#b"
class A_CHILD < A
class B < A::B
def b
puts "A_CHILD#B.b"
super()
end
end
end
看起来应该能 work, 但结果往往出乎意料
A.new.a #=> A::B#b
A_CHILD.new.a #=> A::B#b 这里没有调用A_CHILD自己的B的实例方法b
那么问题来了,可以在不打开 A::B 这个类的前提下,重写内部的方法呢?