如果删除第二个初始化程序的注释,为什么会出现“错误的参数数量”?我正在使用Ruby 1.9.3。谢谢你的帮助!
class Parent
def initialize
puts "Parent initialize"
end
# def initialize(str)
# puts "Parent initialize: #{str}"
# end
end
class Child < Parent
def initialize
puts "Child initialize"
super()
end
end
Child.new
答案 0 :(得分:3)
您无法在Ruby中执行方法重载。如果您取消注释initialize
中的第二个Parent
方法,则会覆盖第一个方法并成为唯一的initialize
方法。
答案 1 :(得分:2)
Ruby没有方法重载。相反,您可以使用默认参数:
class Parent
def initialize(str = nil)
if str.nil?
puts "Parent initialize"
else
puts "Parent initialize: #{str}"
end
end
end
class Child < Parent
def initialize
puts "Child initialize"
super()
end
end
Child.new