Ruby 类案例学习笔记

1. 简介

Ruby 是一门优美、简单、高效的编程语言,作为一名 Ruby 开发者,熟练掌握类的概念及其应用是非常重要的。这篇学习笔记旨在帮助读者更好地理解 Ruby 类的概念和应用。

2. 类的定义

在 Ruby 中,使用 class 关键字来定义一个类,如下所示:

rubyCopy Code
class Animal attr_accessor :name, :age def initialize(name, age) @name = name @age = age end def speak puts "Hello! My name is #{name}, and I am #{age} years old." end end

上面的代码定义了一个 Animal 类,该类具有两个属性和两个方法。其中,attr_accessor 方法可以自动生成 nameage 属性的 Getter 和 Setter 方法。

3. 类的继承

在 Ruby 中,类可以通过继承实现代码重用和扩展。子类可以继承父类的属性和方法,并且可以重写其中的方法或添加新的方法。

例如,我们可以定义一个 Dog 类,继承自 Animal 类:

rubyCopy Code
class Dog < Animal def bark puts "Woof! Woof!" end end

上述代码定义了一个 Dog 类,该类继承自 Animal 类,并且添加了一个 bark 方法。

4. 类的实例化

在 Ruby 中,使用 new 关键字来创建一个类的实例。例如:

rubyCopy Code
animal = Animal.new("Tom", 2) dog = Dog.new("Jack", 3) puts animal.name # 输出 "Tom" puts dog.name # 输出 "Jack" dog.bark # 输出 "Woof! Woof!"

上述代码创建了一个 Animal 类的实例和一个 Dog 类的实例,并调用了它们的属性和方法。

5. 类的访问控制

在 Ruby 中,通过访问控制可以限制类的属性和方法的访问权限。常用的访问控制关键字有 publicprotectedprivate

  • public 表示公有的,所有对象都可以访问。
  • protected 表示受保护的,只能在类及其子类中被访问。
  • private 表示私有的,只能在类内部被访问。

例如:

rubyCopy Code
class Person def initialize(name, age) @name = name @age = age end def introduce puts "My name is #{@name}." end protected def age @age end private def secret puts "I have a secret." end end class Student < Person def introduce super puts "I am #{age} years old." end end person = Person.new("Lily", 20) person.introduce # 输出 "My name is Lily." person.age # 报错:protected method `age' called for #<Person:0x007f9e749c6d50 @name="Lily", @age=20> person.secret # 报错:private method `secret' called for #<Person:0x007f9e749c6d50 @name="Lily", @age=20> student = Student.new("Mike", 18) student.introduce # 输出 "My name is Mike. I am 18 years old."

上述代码定义了一个 Person 类和一个 Student 类,其中 Person 类的 agesecret 方法分别设为受保护和私有。Student 类继承自 Person 类,并在 introduce 方法中调用了父类的 introduce 方法和父类的 age 方法。

6. 总结

Ruby 类是面向对象编程的重要概念,本文介绍了类的定义、继承、实例化以及访问控制等方面的内容,并提供了相应的示例代码。希望读者能通过本文更好地理解 Ruby 类的概念和应用。