- 浏览: 84045 次
- 性别:
最近访客 更多访客>>
最新评论
-
Bernice_liu:
谢谢分享,受益匪浅,适合我——初学者
Ruby语言中文教程all in one -
何枫abc:
怎么感觉Ruby有点像C!!!
3.5 标识名和变量的作用域 3.6 类库 3.7 数据类型 -
何枫abc:
谢谢了!!!你写的很好,现在我正在学Ruby!!!
第二章 运行环境 -
yangzhihuan:
正想知道ruby是怎么样生成像javadoc那样的文档,多谢了 ...
3.1 注释与分行 -
whisper:
从lambda演算的角度说我们并不关心一个东西到底是什么,而只 ...
变量一定要有类型吗(一)
在Ruby里,要读取,或是改变对象的属性,唯一的途径是调用对象的方法。控制了对方法的访问,也就控制了对对象属性的访问。
控制对方法的访问,有三种方式:
访问控制
|
意义
|
public
|
可以被任何实例对象调用,不存在访问控制;
|
protected
|
可以被定义它的类和其子类访问,
可以在类中或子类中指定给实例对象;
|
private
|
可以被定义它的类和其子类访问,
不能被实例对象调用。
|
方法默认都是公有的( initialize方法除外,它永远是私有的)。
看程序 E6.5-1.rb :
ruby 代码
- #E6.5-1.rb
- class Person
- def talk
- puts " public :talk, 将调用speak"
- speak
- end
- def speak
- puts "protected :speak,将调用laugh"
- laugh
- end
- def laugh
- puts " private:laugh"
- end
- protected :speak
- private :laugh
- end
- p1=Person.new
- p1.talk
- #p1.speak 实例对象不能访问protected方法
- #p1.laugh 实例对象不能访问private方法
运行结果:
>ruby E6.5-1.rb
public :talk, 将调用speak
protected:speak,将调用laugh
private:laugh
>Exit code: 0
再看程序 E6.5-2.rb :
ruby 代码
- #E6.5-2.rb
- class Person
- def speak
- "protected:speak "
- end
- def laugh
- " private:laugh"
- end
- protected :speak
- private :laugh
- end
- class Student < Person
- def useLaugh
- puts laugh
- end
- def useSpeak
- puts speak
- end
- end
- p2=Student.new
- p2. useLaugh # => private:laugh
- p2. useSpeak # => protected:speak
从程序 E6.5-1.rb 和程序 E6.5-2.rb ,我们没有看出 protected 和 private 的区别,到底区别在哪里呢?
答案在程序 E6.5-3.rb :
ruby 代码
- #E6.5-3.rb
- class Person
- def speak
- "protected:speak "
- end
- def laugh
- " private:laugh"
- end
- protected :speak
- private :laugh
- def useLaugh(another)
- puts another.laugh #这里错误,私有方法不能指定对象
- end
- def useSpeak(another)
- puts another.speak
- end
- end
- p1=Person.new
- p2=Person.new
- p2.useSpeak(p1) # => protected:speak
- #p2.useLaugh(p1)
从上面三个程序可以得出结论:
public方法,可以被定义它的类和其子类访问,可以被类和子类的实例对象调用;
protected方法,可以被定义它的类和其子类访问,不能被类和子类的实例对象直接调用,但是可以在类和子类中指定给实例对象;
private方法,可以被定义它的类和其子类访问,私有方法不能指定对象。
Ruby语言的访问控制是动态的,是在程序运行时刻确立的。你可以根据自己的需要,在程序的不同位置,改变某个方法的访问控制级别,让你的程序更加富于变化。
ruby 代码
- #E6.5-4.rb
- class Person
- private #后面的方法设定为private
- def talk
- puts " already talk "
- end
- end
- p1=Person.new
- #p1.talk private方法不能访问
- class Person
- public :talk
- end
- p1.talk # => already talk
完整阅读,请看我写的 Ruby语言中文教程all in one
发表评论
-
8.4 迭代器、代码块、闭包
2007-02-13 06:25 1771先看一句代码: ruby 代码 (1..9). ... -
8.3 正则表达式
2007-02-13 06:13 1564一本入门小书,不想涉及正则表达式,但是正则表达式与Ruby语言 ... -
8.2 再说字符串
2007-02-13 06:07 1362一. 生成一个字符串 字 ... -
8.1 再说数组
2007-02-13 06:03 1488一. 建立一个数组 ruby 代码 #E8.1- ... -
7.4 require 和 load
2007-02-13 05:59 1365程序 E7.3-1.rb中先写了Me模块,然后include ... -
7.3 糅和(Mix-in) 与多重继承
2007-02-13 05:55 1812糅和,也译作混合插入,也许就称作 Mix-in 比较合适。 现 ... -
7.1 模块 7.2 命名空间
2007-02-13 05:50 22477.1 模块 我们常常把许 ... -
6.4 单例方法
2007-02-13 05:16 1043同一份设计蓝图(类),不同的实例对象,可以表现出不同的行为特征 ... -
6.3 实例变量、类变量、类方法
2007-02-13 05:28 2278学习编程的过程,就是深化理解变量的过程。在面向对象编程中也不例 ... -
6.2 增强父类方法
2007-02-13 04:39 1053如果我们只是想增强父类的方法,而不是完全地替代它,就可以用关键 ... -
6.1 重载?重写
2007-02-13 04:11 1932在Java 中,重载(overload)和重写(overrid ... -
5.5 一些编码建议
2007-02-13 03:37 1161这里不是 Ruby语言的编 ... -
5.4 蓝图可以改变吗? ——动态语言
2007-02-13 03:28 781Ruby 是动态语言,你可以改变 Ruby 程序的结构,功能, ... -
5.3 详解变量—— 动态类型
2007-02-13 03:22 1200变量是什么?变量有哪些特征呢?学习编程的过程,就是深化理解变量 ... -
5.1 为什么是Ruby? 5.2 Ruby会长久么?
2007-02-13 03:16 10315.1 为什么是Ruby? 现 ... -
4.5 多态
2007-02-13 03:07 801不同的子类继承一个父 ... -
4.4 继承
2007-02-13 03:04 839如果我们要写一个学生 ... -
4.3 封装
2007-02-13 02:53 936让我们来定义一个类,类名是Person,类名首字母要大写;属性 ... -
4.1 两种思维方式 4.2 对象
2007-02-13 02:47 9394.1 两种思维方式 人们 ... -
3.11 一个综合小练习
2007-02-13 02:05 1033还是求50以内的素数,尽可能地用到本章更多的语法,看程序 E3 ...
相关推荐
vncserver是一种远程桌面协议,可以让您从远程访问和控制服务器的图形化桌面。 配置YUM源 首先,我们需要配置YUM源,以便能够从网易的镜像站点下载CentOS6.5的软件包。我们可以使用以下命令: ``` #rpm --import ...
4. **安全控制**:ASP.NET提供了一套完整的安全机制,如身份验证、授权、加密等,这些在组态王6.5的源代码中必不可少,确保只有授权用户能访问和操作系统。 5. **事件驱动编程**:在C#中,事件驱动编程是常见的模式...
该服务器提供了多种安全机制,包括身份验证、访问控制、加密存储等,以确保文件的安全性。安全性是NC6.5文件服务器的一个重要特点。 可靠存储 NC6.5文件服务器提供了可靠的存储功能。该服务器能够提供稳定的存储...
序列号(Serial Number,简称SN),通常是指软件开发者为了控制软件分发、防止非法复制而设计的一种特殊编码。每个序列号都是唯一的,用于验证软件副本的有效性和合法性。 #### 2.2 在VMware中的应用 对于VMware...
2. **安全性增强**:随着网络安全的重要性日益凸显,6.5 版本可能增强了安全特性,包括数据加密、用户认证和权限管理,以保护工业控制系统免受潜在威胁。 3. **性能优化**:KEPServerEX 6.5 可能通过优化数据处理...
4. **脚本语言支持**:为了满足复杂逻辑控制的需求,6.5版本支持内置脚本语言,用户可以编写自定义的控制逻辑,实现更复杂的控制策略。 5. **工程管理与安全机制**:MCGS嵌入版6.5在工程管理上做了改进,支持工程...
PB6.5数据库软件开发是...10. **版本控制**:学习如何与版本控制系统集成,以便团队协作和版本管理。 熟悉并掌握这些知识点,开发者能够在PB6.5环境中高效地构建和维护数据库应用,同时优化系统性能,满足业务需求。
- 配置XenApp服务器属性,包括应用程序设置、访问控制等。 - 使用XenApp的策略管理工具来设置各种策略,包括应用程序访问策略、用户环境设置等。 - 配置和部署应用程序,确保应用程序能够在XenApp环境中正常运行。 -...
总的来说,SecureCRT 6.5作为一个绿色版的远程访问工具,不仅提供了安全的连接方式,还具备了高度的可定制性和实用性,是IT专业人士进行远程运维工作的重要助手。虽然现在有更新的版本,但6.5版本依然能满足许多用户...
4. 视图与存储过程:为了提高数据访问效率和实现复杂的业务逻辑,NC6.5可能使用视图和存储过程。数据字典会包含这些对象的定义,揭示其在系统中的作用和使用方式。 5. 安全性与权限管理:NC系统有严格的权限控制,...
2. **目录服务**:它集成了eDirectory,一个强大的目录服务系统,用于存储和管理用户、组、资源等网络对象信息,提供快速的网络查找和访问控制。 3. **安全性**:Netware 6.5拥有强大的安全特性,如IPSec(Internet...
7. **远程监控与诊断**:允许用户通过网络远程访问和监控设备,提高了系统的灵活性和可维护性。 8. **历史数据查询与报表生成**:具备数据分析功能,能生成历史数据报表,为生产决策提供数据支持。 9. **安全性...
此外,手册还将涵盖安全性设置,包括用户账户管理、角色权限分配和数据库对象的访问控制。 四、数据查询与操作 T-SQL是SQL Server 6.5的主要查询语言,手册会详细介绍SELECT、INSERT、UPDATE、DELETE等基本操作,...
4. **共享与协作**:Axure RP 6.5 支持云服务,可以将项目上传至Axure Share,使团队成员能远程访问和评论原型,提高了协作效率。 5. **版本控制**:在项目开发过程中,版本控制是非常关键的一环。Axure RP 6.5 ...
在XenApp中定义用户环境,控制用户登录外观、设备和端口访问,以及音频配置,是确保用户体验一致性和高效性的关键。此外,会话连续性、活动维护、可靠性配置、自动重新连接、ICA保持活动状态等机制,保障了远程会话...
用户可以创建或使用预先定义的模板,这些模板使用C#语法来描述代码结构,通过简单的参数化,就能自动生成各种类型的代码,如数据库访问层、业务逻辑层、实体类、Web表单等。这不仅减少了手动编写重复代码的时间,也...
4. **版本控制集成**:与Git、SVN等版本控制系统无缝集成,方便团队协作开发。 5. **插件扩展**:通过插件系统,开发者可以扩展其功能,满足更复杂的需求。 "ReadMe.txt"文件通常包含安装、使用过程中的注意事项、...
安全策略**: 设定访问控制、身份验证和授权,以及如何启用虚拟机加密。 **5. 故障排查与优化**: 提供常见问题的解决方法,以及性能调优的建议。 总的来说,"vSphere 6.5全套中文手册"是一份全面的参考资料,涵盖...
DameWare是一款强大的远程管理工具,主要用于IT管理员对网络中的多台计算机进行远程控制、管理和维护。DameWare 6.5.0.0汉化版是该软件的一个早期版本,针对中文用户进行了本地化处理,使其更适合中国用户的使用习惯...