目录搜索
Ruby用户指南3、开始4、简单的例子5、字符串6、正则表达式7、数组8、回到那些简单的例子9、流程控制10、迭代器11、面向对象思维12、方法13、类14、继承15、重载方法16、访问控制17、单态方法18、模块19、过程对象20、变量21、全局变量22、实变量23、局部变量24、类常量25、异常处理:rescue26、异常处理:ensure27、存取器28、对象的初始化29、杂项RGSS入门教程1、什么是RGSS2、开始:最简单的脚本3、数据类型:数字4、数据类型:常量与变量5、数据类型:字符串6、控制语句:条件分歧语句7、控制语句:循环8、函数9、对象与类10、显示图片11、数组12、哈希表(关联数组)13、类14、数据库15、游戏对象16、精灵的管理17、窗口的管理18、活动指令19、场景类Programming Ruby的翻译Programming Ruby: The Pragmatic Programmer's Guide前言RoadmapRuby.new类,对象和变量容器Containers,块Blocks和迭代Iterators标准类型深入方法表达式Expressions异常,捕捉和抛出(已经开始,by jellen)模块基本输入输出线程和进程当遭遇挫折Ruby和它的世界Ruby和Web开发Ruby TkRuby 和微软的 Windows扩展RubyRuby语言 (by jellen)类和对象 (by jellen)Ruby安全反射Reflection内建类和方法标准库OO设计网络和Web库Windows支持内嵌文档交互式Ruby Shell支持Ruby参考手册Ruby首页卷首语Ruby的启动环境变量对象执行结束时的相关处理线程安全模型正则表达式字句构造程序变量和常数字面值操作符表达式控制结构方法调用类/方法的定义内部函数内部变量内部常数内部类/模块/异常类附加库Ruby变更记录ruby 1.6 特性ruby 1.7 特性Ruby术语集Ruby的运行平台pack模板字符串sprintf格式Marshal格式Ruby FAQRuby的陷阱
文字

现实世界满是对象,我们可以为他们分类.举个例子,非常小的孩子看见狗的时候,不管那是什么种类的,都会叫它们"bow-wow";我们天生有通过种类来了解世界的能力.

在OO编程的术语里,像"狗"这样的一类对象称之为一个类,一些特殊的属于这个类的对象叫作类的实体(instance of that class).

一般的,在Ruby或其它OO语言里创造一个对象首先得定义类的属性,接着再创造一个实体.为了说明这一点,让我们先来定义一个简单的Dog类.

ruby> class Dog
    |   def speak
    |     print "Bow Wow\n"
    |   end
    | end
   nil

在Ruby里,一个类的定义是在关键字class和end之间的一段代码.在域中的def开始定义类的一个方法(我们已在上一节讨论过了),它对应于此类中的某些特定的对象方法.

既然我们已有了Dog类,我们就可以用它来创造一只狗:

ruby> pochi = Dog.new
   #<Dog:0xbcb90> 

我们已完成了Dog类的一个全新的实体并为它取名pochi.任何类的new方法都会创生一个新的实体.因为pochi是一只对应于我们已定义类中的狗,它就有我们定义的Dog的一切属性.因为我们对Dog的想法实在简单,我们只能让pochi玩一种把戏.

ruby> pochi.speak
Bow Wow
   nil 

创造一个新的类实体有时也被称作类的实体化(instantiating).我们需要逗一只实实在在的狗;而不是希望让Dog类向我们汪汪叫.

ruby> Dog.speak
ERR: (eval):1: undefined method `speak' for Dog:class 

吃"三明治的概念"显然也是毫无意义的.

同时,如果我们只是想听听狗叫声而不带任何情感,我们可以创造(实体化)一只短命的,临时存在的狗,并在消失前小吠几声.

ruby> (Dog.new).speak   # or more commonly, Dog.new.speak
Bow Wow
   nil 

"等等,"你说,"这只可怜的家伙消失到什么地方去了?"是这样的:如果我们不介意给它个名字(就像早先给pochi一样),Ruby的自动垃圾回收器会认为那是只流浪犬,然后不留情的处理掉它.这的确可行,你知道的,因为我们可以随心所欲地创造任何的狗. 版权声明:RUBY文档中心的所有文章标明[原创]的均为本站作品,版权属RUBY中文化计划,若转载请注明;标明[翻译]的其外文版权归原作者,译文版权属RUBY中文化计划;标明[转贴]的,若原作者感到侵犯了他的著作权,那么请及时跟主持人联系,我们会尽快更正。  
上一篇:下一篇: