Ruby 类和对象


Ruby 类和对象

Ruby 是一种纯面向对象的编程语言。在 Ruby 中,将一些有着相同属性和功能的代码封装在一起被称为类。创建类的过程被称为类定义。类定义是 Ruby 的核心特性之一,它使得 Ruby 具有了极高的扩展性和重用性。

类的定义

在 Ruby 中,我们可以使用关键字 class 来定义类。以下是一个简单的类定义例子:

class Person
  def initialize(name, age)
    @name = name
    @age = age
  end
end

在类中我们可以为其添加属性或者方法,例如:

class Person
  def initialize(name, age)
    @name = name
    @age = age
  end
  
  def introduction
    puts "My name is #{@name} and I am #{@age} years old."
  end
end

在 Ruby 中,所有以 @ 开头的变量被称为实例变量,它们的作用域限定在对象实例内,不能被其他实例直接访问。在以上例子中,@name@age 就是对象的实例变量,initialize 方法则是对象的构造方法。

对象的创建

在类定义完成之后,我们可以通过调用 new 方法来创建一个新的对象:

person = Person.new("Tom", 25)

以上代码将会创建一个名叫 Tom 年龄为 25Person 对象,变量 person 将指向该对象。

方法调用

当对象被创建之后,我们可以调用方法来操作对象的状态或者执行对象的功能。方法调用的方式有两种:

  • 使用点号 .
  • 使用两个冒号 ::

点号用于调用对象的公共方法,语法如下:

person.introduction

以上代码将会调用 person 对象的 introduction 方法。

双冒号用于调用类或者模块中的静态方法,例如:

Math::sqrt(16)

以上代码将会调用 Math 模块中的 sqrt 方法,计算 16 的算术平方根。

继承

在 Ruby 中,我们可以通过继承来扩展和重用现有类的功能。使用关键字 class< 来定义一个类的继承,例如:

class Man < Person
  def introduction
    puts "I am a man named #{@name} and I am #{@age} years old."
  end
end

以上代码定义了一个名叫 Man 的类,它继承自 Person 类,重写了 introduction 方法。当我们创建一个 Man 对象,并调用 introduction 方法时,将会得到以下输出:

I am a man named Tom and I am 25 years old.

在继承中,子类不仅可以重写父类的方法,还可以定义自己的属性和方法。

总结

Ruby 中的类和对象是这门语言的核心特性之一,它们为我们提供了高度组织化和面向对象化的编程模式。类定义和对象创建是 Ruby 编程的基础,重载、方法调用和继承则为我们提供了丰富的扩展和重用功能。熟练掌握类和对象的使用,将会使我们的代码更加简单、明确和易于维护。