Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现。Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串、数字,甚至连 true 和 false 都是对象。类本身也是一个对象,是 Class 类的一个实例。本章将向您讲解所有与 Ruby 面向对象相关的主要功能。
类用于指定对象的形式,它结合了数据表示法和方法,把数据整理成一个整齐的包。类中的数据和方法被称为类的成员。
Ruby 类定义
当您定义一个类时,您实际是定义了一个数据类型的蓝图。这实际上并没有定义任何的数据,而是定义了类的名称意味着什么,也就是说,定义了类的对象将由什么组成,以及在该对象上能执行什么操作。
类定义以关键字 class 开始,后跟类名称,最后以一个 end 进行分隔表示终止该类定义。例如,我们使用关键字 class 来定义 Box 类,如下所示:
class Box codeend
按照惯例,名称必须以大写字母开头,如果包含多个单词,每个单词首字母大写,但此间没有分隔符(例如:CamelCase)。
定义 Ruby 对象
类提供了对象的蓝图,所以基本上,对象是根据类进行创建的。我们使用 new 关键字声明类的对象。下面的语句声明了类 Box 的两个对象:
box1 = Box.newbox2 = Box.new
initialize 方法
initialize 方法是一个标准的 Ruby 类方法,与其他面向对象编程语言中的 constructor 工作原理类似。当您想要在创建对象的同时初始化一些类变量,initialize 方法就派上用场了。该方法带有一系列参数,与其他 Ruby 方法一样,使用该方法时,必须在前面放置 def 关键字,如下所示:
class Box def initialize(w,h) @width, @height = w, h endend
实例变量
实例变量是类属性,它们在使用类创建对象时就变成对象的属性。每个对象的属性是单独赋值的,和其他对象之间不共享值。在类的内部,是使用 @ 运算符访问这些属性,在类的外部,则是使用称为访问器方法的公共方法进行访问。下面我们以上面定义的类 Box 为实例,把 @width 和 @height 作为类 Box 的实例变量。
class Box def initialize(w,h) # 给实例变量赋值 @width, @height = w, h endend
访问器 & 设置器 方法
为了在类的外部使用变量,我们必须在访问器方法内部定义这些变量,这些访问器方法也被称为获取器方法。下面的实例演示了访问器方法的用法:
#!/usr/bin/ruby -w # 定义类class Box # 构造器方法 def initialize(w,h) @width, @height = w, h end # 访问器方法 def printWidth @width end def printHeight @height endend # 创建对象box = Box.new(10, 20) # 使用访问器方法x = box.printWidth()y = box.printHeight() puts "Width of the box is : #{x}"puts "Height of the box is : #{y}"
新闻热点
疑难解答