构造函数是面向对象编程中最重要的部分之一。类的构造函数是一个独特的方法,当实例化该特定类的对象时,将调用该方法。不需要显式声明即可进行调用。构造函数的主要目的是在对象创建过程中促进对类变量的初始化。构造函数的工作方式与普通方法相同,它们确实包含语句,表达式和方法调用。
在其他面向对象的语言(例如C ++和Java)中,类和构造函数的名称曾经是相同的,但是在Ruby的情况下,该名称与类的名称不同。在Ruby中,您可以借助以下语法来定义构造函数,
def initialize #expressions end
一个构造函数返回一个类的对象。无法向构造函数提供继承,而允许重载构造函数。构造函数以以下方式在类中定义:
class CLASS_NAME def initialize #expressions end #其他方法 end
上面是没有参数的构造函数的语法。通过以下语法了解带参数的构造函数,
class CLASS_NAME def initialize(#参数列表) #expressions end #其他方法 end
请记住–构造函数是类的一种特殊方法。它不需要显式调用。在Ruby中,构造函数是在“ new”关键字的帮助下调用的,而new关键字用于创建该类的对象。在“新”的关键字给内部调用“初始化”方法,如果有新规定了一些参数,它会被传递给initialize方法。如果构造函数不是参数化的,并且“ new”具有一些参数,则编译器将生成一个错误,称为“ initialize:错误的参数数目”。
让我们了解一个非参数构造函数的示例
=begin Ruby program to demonstrate constructor without parameters =end class ClassA #非参数构造函数 def initialize for i in 0..10 puts "Welcome to Nhooo.com" end end end #类实例化 ClassA.new
输出结果
Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com Welcome to Nhooo.com
您可以在上面的代码中观察到,当我们对“ new”关键字进行显式调用时,这反过来是对initialize方法的内部调用。
现在,借助以下示例了解参数构造函数,
=begin Ruby program to demonstrate constructor with parameters =end class ClassA #参数构造函数 def initialize(a,b) @instA=a @instB=b end def prnt puts "First value is : #{@instA}" puts "Second value is : #{@instB}" end end #类实例化s ob1=ClassA.new(10,20) ob2=ClassA.new(13,200) ob1.prnt ob2.prnt
输出结果
First value is : 10 Second value is : 20 First value is : 13 Second value is : 200
在上面的示例中,您可以观察到我们正在为“ new”提供值,而“ new”证明了这些值可用于初始化方法。