- Ruby 基础
- Ruby - 首页
- Ruby - 概述
- Ruby - 环境设置
- Ruby - 语法
- Ruby - 类和对象
- Ruby - 变量
- Ruby - 运算符
- Ruby - 注释
- Ruby - IF...ELSE
- Ruby - 循环
- Ruby - 方法
- Ruby - 代码块
- Ruby - 模块
- Ruby - 字符串
- Ruby - 数组
- Ruby - 哈希表
- Ruby - 日期和时间
- Ruby - 范围
- Ruby - 迭代器
- Ruby - 文件 I/O
- Ruby - 异常
Ruby - 类和对象
Ruby 是一种完美的面向对象编程语言。面向对象编程语言的特性包括:
- 数据封装
- 数据抽象
- 多态性
- 继承
这些特性在章节 面向对象 Ruby 中进行了讨论。
面向对象程序涉及类和对象。类是创建单个对象的蓝图。用面向对象的术语来说,我们可以说你的自行车是称为自行车的对象类的一个实例。
以任何车辆为例。它包括车轮、马力以及燃油或油箱容量。这些特性构成了 Vehicle 类的成员数据。您可以借助这些特性来区分一辆车辆与另一辆车辆。
车辆还可以具有一些功能,例如停止、驾驶和加速。即使这些功能也构成了 Vehicle 类的成员数据。因此,您可以将类定义为特征和功能的组合。
可以将 Vehicle 类定义为:
Class Vehicle {
Number no_of_wheels
Number horsepower
Characters type_of_tank
Number Capacity
Function speeding {
}
Function driving {
}
Function halting {
}
}
通过为这些数据成员分配不同的值,您可以形成 Vehicle 类的多个实例。例如,飞机有三个车轮,马力为 1000,燃油为油箱类型,容量为 100 升。同样,汽车有四个车轮,马力为 200,汽油为油箱类型,容量为 25 升。
在 Ruby 中定义类
要使用 Ruby 实现面向对象编程,您首先需要学习如何在 Ruby 中创建对象和类。
Ruby 中的类始终以关键字class开头,后跟类名。名称应始终以大写字母开头。Customer 类可以显示为:
class Customer end
您可以使用关键字end终止类。class中的所有数据成员都在类定义和end关键字之间。
Ruby 类中的变量
Ruby 提供四种类型的变量:
局部变量 - 局部变量是在方法中定义的变量。局部变量在方法外部不可用。您将在后续章节中看到有关方法的更多详细信息。局部变量以小写字母或 _ 开头。
实例变量 - 实例变量在任何特定实例或对象的各种方法中都可用。这意味着实例变量因对象而异。实例变量以 at 符号 (@) 开头,后跟变量名。
类变量 - 类变量在不同的对象之间可用。类变量属于类,是类的特征。它们以 @@ 符号开头,后跟变量名。
全局变量 - 类变量在类之间不可用。如果要有一个在类之间可用的单个变量,则需要定义一个全局变量。全局变量始终以美元符号 ($) 开头。
示例
使用类变量 @@no_of_customers,您可以确定正在创建的对象的数量。这有助于确定客户的数量。
class Customer @@no_of_customers = 0 end
使用 new 方法在 Ruby 中创建对象
对象是类的实例。您现在将学习如何在 Ruby 中创建类的对象。您可以使用类的new方法在 Ruby 中创建对象。
new方法是一种在 Ruby 库中预定义的唯一方法类型。new 方法属于类方法。
以下是如何创建 Customer 类的两个对象 cust1 和 cust2 的示例:
cust1 = Customer. new cust2 = Customer. new
这里,cust1 和 cust2 是两个对象的名称。您在对象名称后写上等于号 (=),然后是类名。然后,点运算符和关键字new将紧随其后。
自定义方法来创建 Ruby 对象
您可以将参数传递给new方法,这些参数可用于初始化类变量。
当您计划用参数声明new方法时,您需要在创建类时声明initialize方法。
initialize方法是一种特殊类型的特殊方法,当用参数调用类的new方法时,它将被执行。
以下是如何创建 initialize 方法的示例:
class Customer
@@no_of_customers = 0
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
end
在此示例中,您声明了initialize方法,并使用id、name和addr作为局部变量。这里,def和end用于定义 Ruby 方法initialize。您将在后续章节中学习有关方法的更多信息。
在initialize方法中,您将这些局部变量的值传递给实例变量 @cust_id、@cust_name 和 @cust_addr。这里局部变量保存与 new 方法一起传递的值。
现在,您可以如下创建对象:
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
Ruby 类中的成员函数
在 Ruby 中,函数称为方法。class中的每个方法都以关键字def开头,后跟方法名。
方法名始终以小写字母为佳。您可以在 Ruby 中使用关键字end结束方法。
以下是如何定义 Ruby 方法的示例:
class Sample
def function
statement 1
statement 2
end
end
这里,statement 1和statement 2是 Sample 类中function方法主体的一部分。这些语句可以是任何有效的 Ruby 语句。例如,我们可以使用puts方法打印Hello Ruby,如下所示:
class Sample
def hello
puts "Hello Ruby!"
end
end
现在在以下示例中,创建一个 Sample 类的对象并调用hello方法,查看结果:
#!/usr/bin/ruby
class Sample
def hello
puts "Hello Ruby!"
end
end
# Now using above class to create objects
object = Sample. new
object.hello
这将产生以下结果:
Hello Ruby!
简单案例研究
如果您想更多地练习类和对象,这里有一个案例研究。