我很难理解什么时候可以调用“super”,什么时候不可以。在下面的示例中,super 方法导致 no superclass 错误。
class Bacterium
def eats
puts "Nam"
end
end
class Bacterium
def eats
super # -> no superclass error
puts "Yam"
end
end
b = Bacterium.new
b.eats
但这有效:
class Fixnum
def times
super # -> works
puts "done"
end
end
5.times { |i| puts i.to_s }
5 不仅是 Fixnum 的一个实例。我不是像上面的细菌示例那样重新定义现有方法吗?