Ruby| 如何在派生类对象的帮助下初始化基类构造函数?

在继承期间,如果要在派生类对象的帮助下向基类构造函数提供值,则需要使用“ 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传递给超类,从而导致超类变量的初始化。