Ruby 类案例学习笔记
1. 简介
Ruby 是一门优美、简单、高效的编程语言,作为一名 Ruby 开发者,熟练掌握类的概念及其应用是非常重要的。这篇学习笔记旨在帮助读者更好地理解 Ruby 类的概念和应用。
2. 类的定义
在 Ruby 中,使用 class
关键字来定义一个类,如下所示:
rubyCopy Codeclass 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
方法可以自动生成 name
和 age
属性的 Getter 和 Setter 方法。
3. 类的继承
在 Ruby 中,类可以通过继承实现代码重用和扩展。子类可以继承父类的属性和方法,并且可以重写其中的方法或添加新的方法。
例如,我们可以定义一个 Dog
类,继承自 Animal
类:
rubyCopy Codeclass Dog < Animal
def bark
puts "Woof! Woof!"
end
end
上述代码定义了一个 Dog
类,该类继承自 Animal
类,并且添加了一个 bark
方法。
4. 类的实例化
在 Ruby 中,使用 new
关键字来创建一个类的实例。例如:
rubyCopy Codeanimal = 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 中,通过访问控制可以限制类的属性和方法的访问权限。常用的访问控制关键字有 public
、protected
和 private
。
public
表示公有的,所有对象都可以访问。protected
表示受保护的,只能在类及其子类中被访问。private
表示私有的,只能在类内部被访问。
例如:
rubyCopy Codeclass 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
类的 age
和 secret
方法分别设为受保护和私有。Student
类继承自 Person
类,并在 introduce
方法中调用了父类的 introduce
方法和父类的 age
方法。
6. 总结
Ruby 类是面向对象编程的重要概念,本文介绍了类的定义、继承、实例化以及访问控制等方面的内容,并提供了相应的示例代码。希望读者能通过本文更好地理解 Ruby 类的概念和应用。