📜  Ruby-类和对象(1)

📅  最后修改于: 2023-12-03 15:19:52.645000             🧑  作者: Mango

Ruby - 类和对象

Ruby是一种面向对象的编程语言,因此类和对象是Ruby的核心概念。在本文中,我们将深入研究Ruby中类和对象的基础知识,包括如何创建类和对象、实例变量和方法、类变量和方法、对象继承等。

创建类和对象

要创建类,您可以使用 class 关键字,后跟类名。例如,以下是一个名为 Person 的类的定义:

class Person
end

要创建对象,您可以使用 new 方法,后跟类名。例如,以下是使用上面定义的 Person 类创建一个对象的示例:

person = Person.new
实例变量和方法

每个对象都拥有一组实例变量,这些变量存储对象的状态。要定义一个实例变量,请在类的定义中使用 @ 符号。例如,以下是 Person 类中的实例变量 @name 的定义:

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

要定义一个方法,请在类的定义中使用 def 关键字。例如,以下是 Person 类中的 say_hello 方法的定义:

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

  def say_hello
    puts "Hi, my name is #{@name}!"
  end
end

要调用 Person 类的 say_hello 方法,请使用以下代码:

person = Person.new("John")
person.say_hello

这将输出:

Hi, my name is John!
类变量和方法

类变量是在整个类中的所有对象之间共享的变量。要定义一个类变量,请在类的定义中使用 @@ 符号。例如,以下是 Person 类中的类变量 @@count 的定义:

class Person
  @@count = 0

  def initialize(name)
    @name = name
    @@count += 1
  end

  def self.count
    @@count
  end
end

要定义类方法,请在方法名前使用 self 关键字。例如,以下是 Person 类中的 count 类方法的定义:

class Person
  @@count = 0

  def initialize(name)
    @name = name
    @@count += 1
  end

  def self.count
    @@count
  end
end

要调用 Person 类的 count 类方法,请使用以下代码:

puts Person.count

这将输出 0,因为我们尚未创建任何 Person 对象。现在,让我们创建一个 Person 对象并再次调用 count 类方法:

person1 = Person.new("John")
person2 = Person.new("Mary")
puts Person.count

这将输出 2,因为我们创建了两个 Person 对象。

对象继承

Ruby中的对象继承机制允许您创建一个类,该类是另一个类的子类。子类将继承父类的所有实例变量和方法,并可以添加自己的实例变量和方法。

要定义一个子类,请使用父类的名称,后跟 < 和子类的名称。例如,以下是 Student 类的定义,它是 Person 类的子类:

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

  def say_hello
    puts "Hi, my name is #{@name}!"
  end
end

class Student < Person
  def initialize(name, school)
    super(name)
    @school = school
  end

  def say_hello
    puts "Hi, my name is #{@name} and I attend #{@school}!"
  end
end

在这个示例中,我们重写了 Person 类的 say_hello 方法,并将其添加到 Student 类中。当我们创建一个 Student 对象并调用 say_hello 方法时,Student 类的版本将被调用。

student = Student.new("John", "Harvard")
student.say_hello

这将输出:

Hi, my name is John and I attend Harvard!
结论

在本文中,我们学习了如何创建类和对象、定义实例变量和方法、定义类变量和方法以及实现对象继承。这些是Ruby中类和对象的基础知识,是构建更复杂应用程序的基石。祝您在学习Ruby时好运!