ruby 中的初始化方法(构造函数)是私有的还是公共的?
问问题
4174 次
2 回答
16
让我们来看看:
class Test
def initialize; end
end
p Test.new.private_methods.sort.include?(:initialize)
这将打印true
,因此initialize
是私有方法。这是有道理的,只有在new
创建对象时才由类方法调用。如果我们愿意,我们可以这样做:
class Test
def initialize
@counter = 0
end
def reset!
initialize
end
end
然而,如果构造函数不仅仅是简单的变量初始化,那么像这样滥用构造函数可能会导致问题。
于 2012-01-06T15:08:17.013 回答
4
类中的initialize
方法自动变为私有。
您可以使用以下方法检查它:
puts ClassName.private_methods.sort
于 2014-06-24T13:06:51.000 回答