第三章类、对象和变量
类定义:
ruby 代码
- class Song
- def initialize(name,artist,duration)
- @name=name
- @artist=artist
- @duration=duration
- end
- end
当使用Song.new创建一个Song的对象时,首先分配一些内存来保存为初始化的对象,然后调用对象的initialize方法,并把调用new 时所使用的参数传入该方法
继承自Object的方法:
inspect:默认将对象的ID和实例变量格式化。
to_s:Ruby标准消息,返回对象的字符串表示,默认为对象的ID
为类添加新特性:在Ruby中类不是封闭的,可以向一个已有的类中添加方法,当为类添加新方法时,只需打开类的定义,添加新方法,原有的方法依然存在。
例如要在Song类中重写to_s方法,只需向Song中添加一个to_s方法,而不必重写原来的类。
ruby 代码
- class Song
- def to_s
- "Song: #@name--#@artist (#@duration)"
- end
- end
这时Song就重写了to_s方法,而原有的方法都不变。
继承
通过关键字"小于号"实现继承
super关键字:在方法中使用super而不使用参数时,Ruby向当前对象的父类发送一个消息,要求调用父类中的同名方法。
属性
一个对象的外部状态叫做属性,就是访问和操作对象的状态的方法。
访问对象状态,类似于Java的getter方法,操作对象状态,类似于Java的setter方法。
getter和setter
- class Song
-
- def name
- @name
- end
- def artist
- @artist
- end
- def duration
- @duration
- end
-
- def name=(new_name)
- @name=new_name
- end
- def artist=(new_artist)
- @artist=new_artist
- end
- def duration=(new_duration)
- @duration=new_duration
- end
- end
此外,Rubby提供了一种方便的快捷方式:
ruby 代码
- class Song
- attr_reader :name, :artist, :duration
- attr_writer :name, :artist, :duration
- end
类变量和类方法
类变量被类的所有对象所共享,相当于Java的static变量,类变量由两个@开头,在使用之前必需被初始化。
类变量
- class Song
- @@plays=0
- def play
- @@plays+=1
- end
- def Song.closeall
- @@plays=0
- end
- end
@@plays是Song类的一个类变量,每创建一个Song对象并调用play方法时,@@plays加一,@@plays依赖于Song类,而不是Song的对象。
类方法相当于Java中的static方法,它被类所使用。类方法的定义通过在方法名之前放置一个类名和句点来定义
Singleton
ruby 代码
- class MyLogger
- private:new
- @@logger=nil
- def MyLogger.create
- @@logger=new unless @@logger
- @@logger
- end
- end
分享到:
相关推荐
Programming Ruby - The Pragmatic Programmer's Guide, 2nd Edition (2005) [annotated]
内含以下4个文档: 1、Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm 2、O'Reilly.Learning.Ruby.May.2007.chm 3、Programming Ruby 2e.pdf 4、ruby中文文档.chm
Programming Ruby, Ruby程序设计
Programming Ruby 2.0 1.9 pdf
Programming ruby.pdf 英文的,不过觉得读起来不吃力,习惯就好了,程序员如果不习惯读英文,会错过非常多的好书
Programming Ruby 1.9 (3rd edition)和源码
Programming Ruby 第二版(Second Edition)英文版于2005年出版,之后有了中文版。但可惜的是网上流传的中文版PDF基本上都是扫描版的,文字内容得自己打出来,看到好的代码也得自己动手,无法Ctrl-C + Ctrl-V,还...
Programming Ruby English version and the source Code
《Programming Ruby》中文第2版源代碼下載
PROGRAMMING+RUBY中文版 PROGRAMMING+RUBY中文版 PROGRAMMING+RUBY中文版
Programming Ruby中文版 (第二版).pdf
Programming Ruby中文版第二版[高清扫描版][带书签]。 Programming.Ruby-2nd[高清文字版][带
学习Ruby最好的书,俗称镐头书,受用无限。
Programming Ruby是关于Ruby语言的一本权威著作,也被称为PickAxe Book(镐头书,由封面上的工具得名)。本书是它的第2版,其中包括超过200页的新内容,以及对原有内容的修订,涵盖了Ruby 1.8中新的和改进的特性以及...
Ruby学习资料(含参考手册和Programming Ruby)-中文.rar
Programming Ruby 2nd Edition
Programming Ruby中文版 (第二版).pdf part1(有4部分)
《Programming Ruby》英文chm版计算机电子书下载-The Pragmatic Programmer's Guide,学习ruby一定要研究一下这本《Programming Ruby》电子书Ruby是一种跨平台、面向对象的动态类型编程语言。Ruby体现了表达的一致性...
学习ruby的绝佳入门书籍,Programming Ruby 2nd.pdf
RUBY 中文版