在Ruby中,类和对象是面向对象编程的核心概念。以下是关于Ruby类和对象的基本概念:

1. 类(Class):

类是一种抽象数据类型,用于封装数据和行为。在Ruby中,类由关键字class定义。一个简单的类如下:
class Dog
  def bark
    puts "Woof, woof!"
  end
end

这定义了一个名为Dog的类,它具有一个名为bark的方法。

2. 对象(Object):

对象是类的实例。在Ruby中,你可以使用new方法创建一个对象:
my_dog = Dog.new

my_dog是Dog类的一个实例,现在你可以调用该实例的方法:
my_dog.bark  # 输出 "Woof, woof!"

3. 初始化方法(Constructor):

每当创建一个类的新实例时,Ruby会调用initialize方法。这个方法通常用于初始化对象的状态。
class Dog
  def initialize(name)
    @name = name
  end

  def bark
    puts "#{@name} says Woof!"
  end
end

my_dog = Dog.new("Buddy")
my_dog.bark  # 输出 "Buddy says Woof!"

4. 实例变量(Instance Variable):

实例变量以@开头,用于在对象内部存储状态。
class Dog
  def initialize(name)
    @name = name
  end

  def bark
    puts "#{@name} says Woof!"
  end
end

my_dog = Dog.new("Buddy")

5. 访问器方法(Accessor Methods):

你可以使用访问器方法来获取和设置实例变量的值。Ruby提供了attr_accessor、attr_reader和attr_writer来简化这个过程。
class Dog
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def bark
    puts "#{@name} says Woof!"
  end
end

my_dog = Dog.new("Buddy")
puts my_dog.name  # 获取实例变量的值
my_dog.name = "Max"  # 设置实例变量的值

6. 继承(Inheritance):

Ruby支持类的继承。一个类可以继承另一个类的行为和属性。
class Animal
  def speak
    puts "Animal makes a sound."
  end
end

class Dog < Animal
  def bark
    puts "Woof, woof!"
  end
end

my_dog = Dog.new
my_dog.speak  # 继承了父类的方法
my_dog.bark   # 自身的方法

7. 模块(Module):

模块用于组织和封装代码。它可以包含方法、常量和类。
module Swimmable
  def swim
    puts "I'm swimming!"
  end
end

class Dog
  include Swimmable
end

my_dog = Dog.new
my_dog.swim  # 使用模块中的方法

8. 多态性(Polymorphism):

多态性是一种允许使用相同的接口处理不同类型对象的概念。在Ruby中,你可以使用相同的方法名称处理不同类的对象。
class Cat
  def speak
    puts "Meow!"
  end
end

class Dog
  def speak
    puts "Woof!"
  end
end

def make_sound(animal)
  animal.speak
end

my_cat = Cat.new
my_dog = Dog.new

make_sound(my_cat)  # 输出 "Meow!"
make_sound(my_dog)  # 输出 "Woof!"

以上是一些关于Ruby类和对象的基础概念。类和对象是Ruby中面向对象编程的核心,它们使得代码更具结构、可维护性,也更易于理解。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6445/Ruby