Ruby继承

Ruby中的继承

继承是面向对象语言的一项功能,其中新类从现有类派生,并导致形成类层次结构。在派生类通常称为子类和现有类被称为父类。继承提供了代码可重用性,从而提高了人员在平台上编写代码的效率。

Ruby是一种面向对象的语言,因此它支持Inheritance的主要功能。我们还可以通过两个类AB的示例来解释继承。

让我们使用其语法在ruby中定义这两个类:

    class A
        #类方法
    end

    class B
        #类方法
    end

如果我们要在类B上提供继承,则语法将更改为:

    class A
        #类方法
    end

    class B < A
        #类方法
    end

在上面的语法中,我们使用了“ <”符号来继承一个类。现在,如果创建了类B的对象,那么它也将能够使用类A的数据成员和成员方法。这提供了代码可重用性,因为现在我们不必定义已经在类A类B中声明的方法。继承后可能有两个类。

  1. 超级类:超级类是继承其方法的父类。也可以称为基类。

  2. 子类:子类通常被称为派生类或子类。子类派生基类或父类的方法和变量。

Ruby仅支持单级继承,这意味着子类只能具有一个基类或父类。它不允许多级继承,这意味着如果我们要创建单个子类的多个父类,那么这是不可能的。多重继承受到限制,因为它会产生歧义错误,或者如果两个父类中的方法名称相同并且编译器无法决定或选择正确的路径,则可以说它会创建多个路径。

Ruby平台中定义的每个类都有一个默认的父类。在Ruby 1.9之前,每个类的父类默认情况下都称为“对象类”,而在Ruby 1.9以后,每个类的父类或超类的默认情况下都为“基本对象类”。

让我们借助以下示例了解继承的实际实现:

=begin 
Ruby program to demonstrate Inheritance.
=end

class ClassA
	def Show
		puts "Welcome to NHOOO"
	end
	def Message
		puts "Enter your name: "
		nm=gets.chomp
		puts "Hello #{nm}, I hope you are doing great"
	end
end

class ClassB<ClassA
	def Hello
		puts "Hello World!"
	end
end

ob1=ClassB.new
ob1.Show
ob1.Message
ob1.Hello

输出结果

Welcome to NHOOO
Enter your name:
Hrithik
Hello Hrithik, I hope you are doing great
Hello World!

您可以在上面的代码中观察到,ClassB是基类ClassA的子类。ClassB的对象可以访问ClassA的方法。