Ruby中访问控制符public,private,protected区别总结
来源:互联网 发布:qq头像ps源码 编辑:程序博客网 时间:2024/06/05 16:09
重点关注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" endendclass 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 endendclass C def test a = A.new #a.protected_mth #wrong #a.private_mth #wrong endendA.new.testB.new.testC.new.test
<pre class=" ruby" title="" name="code" style="white-space: pre-wrap; word-wrap: break-word; color: rgb(51, 51, 51); font-size: 14px; margin-top: 5px; margin-bottom: 5px; padding: 8px 10px; background-color: rgb(241, 245, 246); border: 1px dashed rgb(176, 190, 199); font-family: 'Courier New', Courier, monospace, Fixed; overflow: auto; line-height: 20px;"><span style="font-family: Verdana, Tahoma, 'BitStream vera Sans', Arial, Helvetica, sans-serif;">参考:http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes#Declaring_Visibility</span>
0 0
- Ruby中访问控制符public,private,protected区别总结
- Ruby中访问控制符public,private,protected区别总结
- Ruby中访问控制符public,private,protected区别总结
- Ruby中访问控制符public,private,protected区别总结
- 访问控制符public ,private ,protected,private protected的区别!
- 访问控制中默认,public,private,protected区别?
- Java访问控制符private, default, protected, public的区别
- C++中public,protected,private访问控制
- java中访问控制符public、private、protected、default之间的区别
- 访问控制修饰符public, protected, private
- C++访问控制符private/protected/public
- Java访问控制符:public,private,protected
- C++访问控制符private/protected/public
- 访问控制(public .private .protected )
- public、protected、private控制符的区别
- c++中private,public,protected的访问控制
- java 中访问控制 public、private 和 protected 介绍
- c#中访问修饰符public,private,protected,internal,protected internal的区别
- C语言读取配置文件
- Hibernate 继承关系
- SOA、ESB、SCA之间的联系
- 一个字符串IP分割的处理小程序
- gg初体验之安装
- Ruby中访问控制符public,private,protected区别总结
- 找出两个字符串中最大公共子字符串,如"abccade"、"dgcadde"的最大子串为"cad"
- Servlet生命周期与工作原理
- Servlet生命周期与工作原理
- 浅谈Java中工具类的调用方法及说明书生成方案
- rails或者rails的engine中model模块化以及constantize使用
- 十道一般人无法及格的C语言试题
- discuz的QQ互联的开启
- Oracle迁移到DB2的策略及最佳案例