班上
class A
private
def foo
puts :foo
end
public
def bar
puts :bar
end
private
def zim
puts :zim
end
protected
def dib
puts :dib
end
end
A的实例
a = A.new
测试
a.foo rescue puts :fail
a.bar rescue puts :fail
a.zim rescue puts :fail
a.dib rescue puts :fail
a.gaz rescue puts :fail
测试输出
fail
bar
fail
fail
fail
.发送测试
[:foo, :bar, :zim, :dib, :gaz].each { |m| a.send(m) rescue puts :fail }
.发送输出
foo
bar
zim
dib
fail
问题
标有“测试输出”的部分是预期结果。那么为什么我可以简单地访问私有/受保护的方法Object#send
呢?
也许更重要的是:
Ruby中的public
/ private
/有什么区别?protected
什么时候使用每个?有人可以提供真实世界的示例private
和protected
用法吗?