在继承期间,如果要在派生类对象的帮助下向基类构造函数提供值,则需要使用“ super”关键字。通过super()
在子类的initialize方法中实现,您可以初始化基类的变量。
以下是与超级相关的情况,
没有参数的super:
当您只写“ super”时,仅表示您正在调用没有参数的super。在这种情况下,Ruby将消息传递给该对象的超类,并要求它在基类中调用与调用super的方法相同的名称方法。
带有空列表的super:在这种情况下,
实现看起来像super()
,即使基类构造函数在参数列表中有一些提供的值,也没有参数传递给该对象的Parent类。
带参数列表的super:在这种情况下,
一般实现看起来像super(val1,val2,...,valn)。在这里,所有参数都将传递给super的参数列表中提到的超类。
码:
=begin How to initialize base class variables with derived class object =end class Base def initialize(a,b) @var1=a @var2=b puts "Value of a and b is #{@var1} and #{@var2} in base class" end end class Derived < Base def initialize(a,b) super(a,b) #实施超级 @var3=a @var4=b end def print1 puts "Value of a and b is #{@var3} and #{@var4}" end end ob1=Derived.new(10,20) ob1.print1
输出结果
Value of a and b is 10 and 20 in base class Value of a and b is 10 and 20
您可以在上面的代码中观察到我们正在super()
方法中传递参数,并且这些参数由Ruby传递给超类,从而导致超类变量的初始化。