📜  ruby 构造函数 - Ruby (1)

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

Ruby 构造函数

在 Ruby 中,构造函数是实例化一个对象时执行的方法,用于初始化对象的属性。构造函数的方法名与类名相同,其定义方式与普通方法类似,但无需手动调用。构造函数在创建对象时自动调用,并将参数传递给初始化属性。

以下是一个简单的 Ruby 构造函数示例:

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

person = Person.new("Tom", 30)
puts person.inspect

以上代码将创建一个 Person 类,该类具有名为 nameage 的属性。构造函数 initialize 接受两个参数 nameage,用于初始化 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 对象,并将 nameage 分别存储在实例变量 @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 属性,然后定义了 namebreed 属性。通过调用 instance_variable_get 方法可以访问 Cat 对象的属性值。

总结

Ruby 构造函数是实例化对象时自动调用的方法,用于初始化对象的属性。构造函数的方法名与类名相同,其定义方式与普通方法类似,但无需手动调用。在构造函数中,我们通常使用实例变量 @variableName 来存储对象的属性。继承构造函数的基本用法是使用 super 关键字调用父类的构造函数来初始化属性。