📅  最后修改于: 2023-12-03 15:34:46.061000             🧑  作者: Mango
在 Ruby 中,构造函数是实例化一个对象时执行的方法,用于初始化对象的属性。构造函数的方法名与类名相同,其定义方式与普通方法类似,但无需手动调用。构造函数在创建对象时自动调用,并将参数传递给初始化属性。
以下是一个简单的 Ruby 构造函数示例:
class Person
def initialize(name, age)
@name = name
@age = age
end
end
person = Person.new("Tom", 30)
puts person.inspect
以上代码将创建一个 Person
类,该类具有名为 name
和 age
的属性。构造函数 initialize
接受两个参数 name
和 age
,用于初始化 Person
对象的属性。最后,通过调用 Person.new
创建一个新的 Person
对象,并将其存储在变量 person
中。
调用 person.inspect
输出该对象的属性,结果如下所示:
#<Person:0x007f922d1f5a58 @name="Tom", @age=30>
在构造函数中,我们通常使用实例变量 @variableName
来存储对象的属性。通过在 initialize
方法中设置实例变量的值,我们可以将属性值传递给对象。
以下是一个示例:
class Person
def initialize(name, age)
@name = name
@age = age
end
end
person = Person.new("Tom", 30)
puts person.instance_variable_get("@name") # "Tom"
puts person.instance_variable_get("@age") # 30
以上代码创建了一个 Person
对象,并将 name
和 age
分别存储在实例变量 @name
和 @age
中。通过调用 instance_variable_get
方法可以访问 Person
对象的属性值。
在 Ruby 中,子类可以继承父类的构造函数。当子类没有定义自己的构造函数时,它将自动使用父类的构造函数。如果子类定义了自己的构造函数,那么它必须使用 super
关键字来调用父类的构造函数,并传递必要的参数。
以下是一个继承构造函数的示例:
class Animal
def initialize(type)
@type = type
end
end
class Cat < Animal
def initialize(name, breed)
super("Cat")
@name = name
@breed = breed
end
end
cat = Cat.new("Tom", "Siamese")
puts cat.instance_variable_get("@type") # "Cat"
puts cat.instance_variable_get("@name") # "Tom"
puts cat.instance_variable_get("@breed") # "Siamese"
以上代码展示了继承构造函数的基本用法。在 Animal
类中,我们定义了一个构造函数,用于初始化 type
属性。在 Cat
类中,我们通过使用 super
关键字调用父类的构造函数来初始化 type
属性,然后定义了 name
和 breed
属性。通过调用 instance_variable_get
方法可以访问 Cat 对象的属性值。
Ruby 构造函数是实例化对象时自动调用的方法,用于初始化对象的属性。构造函数的方法名与类名相同,其定义方式与普通方法类似,但无需手动调用。在构造函数中,我们通常使用实例变量 @variableName
来存储对象的属性。继承构造函数的基本用法是使用 super
关键字调用父类的构造函数来初始化属性。