Ruby 之 class 中的 private、 protected、public
Private
private 函数只能 在本类和子类的 上下文中调用,且只能通过self访问。
这个意思就是:private函数,只能在本对象内部访问到。
对象实例变量(@)的访问权限就是 private。
代码如下:
class AccessTest
def test
return “test private”
end
def test_other(other)
“other object ”+ other.test
end
end
t1 = AccessTest.new
t2 = AccessTest.new
p t1.test # => test private
p t1.test_other(t2) # => other object test private
# Now make 'test' private
class AccessTest
private :test
end
p t1.test_other(t2) #错误 in `test_other': private method `test' called for #<AccessTest:0x292c14> (NoMethodError)
Protected
protect 函数只能 在本类和子类的 上下文中调用,但可以使用 other_object.function的形式。(这跟 C++ 的 private 模式等同)
这个的关键是 protected函数可以在同类(含子类)的其它对象的内部中使用。
# Now make 'test' protect
class AccessTest
protected:test
end
p t1.test_other(t2) # other object test private
Public
public 函数可以在任何地方调用。成员函数和常量的默认访问权限就是public。
相关推荐
-
Ruby中的public、private、protected区别小结
重点关注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和protected
下面这段程序让我纠结了很久,Ruby中private的概念真的很奇怪... class Test private def test_print puts 'test' end end class Test2 < Test def test_print2 # self.test_print #=> 这里加上self就不能调用,private method `test_print' called for # (NoMethodError) test_print #=> 不加self就能调用
-
Ruby 之 class 中的 private、 protected、public
Private private 函数只能 在本类和子类的 上下文中调用,且只能通过self访问. 这个意思就是:private函数,只能在本对象内部访问到. 对象实例变量(@)的访问权限就是 private. 复制代码 代码如下: class AccessTest def test return "test private" end def test_other(other) "other object "+ other.test end end t1 = Acce
-
详谈PHP中public,private,protected,abstract等关键字的用法
PHP中常用的关键字 在PHP中包含了很多对函数和类进行限制的关键字,常用的通常有abstract,final,interface,public,protected,private,static等等,下面我们就将对这些进行分析整理各个的用法. 变量与方法的关键字public,private,protected public的权限最大,既可以让子类使用,也可以支持实例化之后的调用, protected表示的是受保护的,访问的权限是只有在子类和本类中才可以被访问到 private 表示的是私有,只能
-
C++中类的三种访问权限解析:private、public与protect
目录 C++类的三种访问权限:private.public与protect 类与面向对象 三种访问权限 关于类的访问权限(控制权限)的区别 三种成员控制权限的区别 总结 C++类的三种访问权限:private.public与protect 类与面向对象 C++中可以定义一个类. 定义一个类,其实就是把一堆实体的共同特征给提取出来.这种面向对象而不是面向过程的解决问题的思想,大大提升了复杂大型软件的开发效率. 比如在游戏开发中,需要生成一批属性相近.行为相似的怪物,那我们可以定义一个怪物类: cl
-
php class中public,private,protected的区别以及实例分析
一,public,private,protected的区别public:权限是最大的,可以内部调用,实例调用等.protected: 受保护类型,用于本类和继承类调用.private: 私有类型,只有在本类中使用. 二,实例 复制代码 代码如下: <?phperror_reporting(E_ALL);class test{ public $public; private $private; protected $protected; static $instance; public func
-
Java中的private、protected、public和default的区别(详解)
(1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)对于protected修饰符,它主要的作用就是用来保护子类的.它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西. (3)对于default来说,有点的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类.接口.异常等,都可以相互访问,即使是父类没有用prote
-
Ruby和Ruby on Rails中解析JSON格式数据的实例教程
Ruby解析JSON Ruby解析Json例子: json = '["a", "B", "C"]' puts "Unsafe #{unsafe_json (json).inspect}" #输出Unsafe ["a", "B", "C"] Ruby解析Json把上面的json字符串解析成Array.这样的方法并不安全,比如: json = 'puts "Da
-
浅析php面向对象public private protected 访问修饰符
PHP中有三种访问修饰符,分别是: public(公共的.默认) protected(受保护的) private(私有的)public(公共的.默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限.protected(受保护的)被声明为protected的成员,只允许该类的子类进行访问.private(私有的 ) 被定义为private的成员,对于类内部所有成员都可见,没有访问限制.对类外部不允许访问. 图解demo 复制代码 代码如下: cl
-
如何直接访问php实例对象中的private属性详解
前言 本文主要介绍了关于如何直接访问php实例对象中private属性的相关内容,在介绍关键部分之前,我们先回顾一下php面向对象的访问控制. 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的.被定义为公有的类成员可以在任何地方被访问.被定义为受保护的类成员则可以被其自身以及其子类和父类访问.被定义为私有的类成员则只能被其定义所在的类访问. 类属性必须定义为公有,受保护,私有之一.如果用 var 定义,则被视为公
-
详解Ruby设计模式编程中对单例模式的运用
简介 单例模式是设计模式中最简单的形式之一.这一模式的目的是使得类的一个对象成为系统中的唯一实例.要实现这一点,可以从客户端对其进行实例化开始.因此需要用一种只允许生成对象类的唯一实例的机制,"阻止"所有想要生成对象的访问.使用工厂方法来限制实例化过程.这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义. 要点 显然单例模式的要点有三个:一是某个类只能有一个实例:二是它必须自行创建这个实例:三是它必须自行向整个系统提供这个实例.
-
PHP类与对象中的private访问控制的疑问
复制代码 代码如下: class Bar { public function test() { $this->testPrivate(); $this->testPublic(); } public function testPublic() { echo "Bar::testPublic\n"; } private function testPrivate() { echo "Bar::testPrivate\n"; } } class Foo ext
随机推荐
- ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies数据的传递
- ExtJS4中的requires使用方法示例介绍
- 使用jquery实现div的tab切换实例代码
- 基于java涉及父子类的异常详解
- js密码强度检测
- 在js代码拼接dom对象到页面上去的模板总结(必看)
- 用.Net的File控件上传文件的解决方案
- 懒惰是金 介绍几个php通用的函数第1/2页
- C# WinForm创建Excel文件的实例
- Python实现压缩和解压缩ZIP文件的方法分析
- MySQL安装提示"请键入NET HELPMSG 3534以获得更多的帮助"的解决办法
- jQuery easyui datagrid动态查询数据实例讲解
- js锁屏解屏通过对$.ajax进行封装实现
- js 图片放大效果 修正版
- Android如何动态改变App桌面图标
- JAVA实现基于Tcp协议的简单Socket通信实例
- 解析file_get_contents模仿浏览器头(user_agent)获取数据
- spring boot+thymeleaf+bootstrap实现后台管理系统界面
- WINDOWS下使用DOS命令行连接oracle数据库
- Java实现的串口通信功能示例