| |
|
![]() |
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 |
-> ruby专题 -> Ruby中的public、private、protected区别小结 -> 正文阅读 |
[ruby专题]Ruby中的public、private、protected区别小结 |
这篇文章主要介绍了Ruby中的public、private、protected区别小结,即Ruby中访问控制符的区别总结,需要的朋友可以参考下 重点关注private与protected public 默认即为public,全局都可以访问,这个不解释 private C++, “private” 意为 “private to this class”, 但是Ruby中意为 “private to this instance”. 意思是:C++中,对于类A,只要能访问类A,就能访问A的对象的private方法。 Ruby中,却不行:你只能在你本对象的实例中访问本对象的private方法。 因为Ruby的原则是“private意为你不能指定方法接收者”,接收者只能是self,且self必须省略! 所以Ruby中子类可以访问父类的private方法。但self.private_method是错的。 protected 可以在本类或子类中访问,不能在其它类中访问。 测试代码(public均可访问,代码略) class A def test protected_mth private_mth self.protected_mth #self.private_mth #wrong obj = B.new obj.protected_mth #obj.private_mth #wrong end protected def protected_mth puts "#{self.class}-protected" end private def private_mth puts "#{self.class}-private" end end class B < A def test protected_mth private_mth self.protected_mth #self.private_mth #wrong obj = B.new obj.protected_mth #obj.private_mth #wrong end end class C def test a = A.new #a.protected_mth #wrong #a.private_mth #wrong end end A.new.test B.new.test C.new.test 注:ruby的访问控制不同于java,没有包的区别。 其它包中的类只要引用目标类,和目标类同包下类访问控制规则相同。 |
上一篇文章 下一篇文章 查看所有文章 |
|
360图书馆
软件开发
购物精选
智慧山
阅读网
日历
万年历
2021年3日历 2021/3/6 21:24:04 |
|
网站联系: qq:121756557 email:121756557@qq.com 编程知识 |