Ruby 的类,面向对象编程的基础
2023-09-22 12:02:09
Ruby 的类
在前面的文章中,我们提到了对象的创建。我们可以使用 Object.new 来创建一个对象,并给对象定义各种行为或方法。但是,如果对象的方法较多,显然一个一个地定义是不合适的。
那么,如何才能更方便地管理对象的方法呢?
答案就是使用类。
类可以看作是对象的模板。它定义了对象拥有的属性和方法。当我们创建对象时,就可以使用类来指定对象的类型。这样,我们就不用再一个一个地定义对象的方法了。
类与实例
类与实例之间是一种一对多的关系。一个类可以创建多个实例。每个实例都具有相同的属性和方法,但它们的值可以不同。
例如,我们可以定义一个 Person 类来表示人。Person 类具有 name、age 和 gender 等属性,以及 walk()、talk() 和 eat() 等方法。
然后,我们可以使用 Person 类来创建多个实例。每个实例都代表一个人。例如,我们可以创建以下三个实例:
person1 = Person.new("John", 20, "male")
person2 = Person.new("Mary", 25, "female")
person3 = Person.new("Bob", 30, "male")
这三个实例都具有相同的属性和方法,但它们的值不同。例如,person1 的 name 属性值为 "John",而 person2 的 name 属性值为 "Mary"。
属性
属性是类的成员变量。它表示对象的某个特征或状态。属性可以是公共的(public)、受保护的(protected)或私有的(private)。
公共属性可以在任何地方访问。受保护的属性只能在类及其子类中访问。私有属性只能在类中访问。
例如,我们可以定义一个 Person 类,并为其添加一个 name 属性:
class Person
attr_accessor :name
end
这个属性是公共的,因此可以在任何地方访问。我们可以使用以下代码来设置和获取 person1 的 name 属性:
person1.name = "John"
puts person1.name # 输出 "John"
方法
方法是类的成员函数。它表示对象可以执行的操作。方法可以是公共的(public)、受保护的(protected)或私有的(private)。
公共方法可以在任何地方调用。受保护的方法只能在类及其子类中调用。私有方法只能在类中调用。
例如,我们可以为 Person 类添加一个 walk() 方法:
class Person
def walk
puts "I am walking."
end
end
这个方法是公共的,因此可以在任何地方调用。我们可以使用以下代码来调用 person1 的 walk() 方法:
person1.walk # 输出 "I am walking."
继承
继承是一种将类的属性和方法传递给子类的机制。子类可以继承父类的所有属性和方法,并可以添加自己的属性和方法。
例如,我们可以定义一个 Student 类,并让它继承 Person 类:
class Student < Person
end
Student 类继承了 Person 类的所有属性和方法。因此,Student 对象也可以使用 name 属性和 walk() 方法。
此外,Student 类还可以添加自己的属性和方法。例如,我们可以为 Student 类添加一个 study() 方法:
class Student
def study
puts "I am studying."
end
end
现在,Student 对象可以使用 name 属性、walk() 方法和 study() 方法。
结论
类是面向对象编程的基础。它可以帮助我们更方便地管理对象的方法,并实现代码的重用。
在本文中,我们介绍了 Ruby 中类的概念,类与实例之间的关系,以及属性、方法和继承的使用方法。