public private protected是定义在一个名为Module的类中的三个方法,限定了对方法的访问权限。
关键字模块类定义为作用域门,出现这三个关键词时会发生作用域切换。
默认情况下如果不声明,所有的方法都是public,在private或者受保护的后面都是私人或者受保护的方法。
同时也可以使用public:demo,private:demo,protected:demo的方式定义。
方法initialize方法是private only能被新方法调用
private和protected方法不能在对象实例上直接调用
class Product def initialize(name) @name = name end def show @name end private def sku (1..5).to_a.join end protected def color 'red' endend
r_p1.png
private不能指定接收器即使是自我能
在方法中调用protected在方法内部调用
在方法中调用时可以指定self
在方法中相同类型的对象可以直接调用protected方法在类的中类类的private protected可以被调用但是仍旧遵循上面的规则
(参考一)[ http://culttt.com/2015/06/03/the-difference-between-public-protected-and-private-methods-in-ruby/]
(参考二)[ http:// kaochenlong .COM / 2011/7月26日/公共保护和私有法-在-红宝石/]
作者:就叫初九吧
链接:https://www.jianshu.com/p/282ebd8f2be6