Ruby:将初始化添加到父类导致“错误的参数数量”

时间:2014-05-10 15:16:38

标签: ruby

如果删除第二个初始化程序的注释,为什么会出现“错误的参数数量”?我正在使用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

2 个答案:

答案 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