📅  最后修改于: 2023-12-03 15:19:52.645000             🧑  作者: Mango
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时好运!