在本教程中,我们将研究Ruby中的多态性。众所周知,Ruby是一种纯粹的面向对象语言,而多态性是任何面向对象语言的重要特征之一。您一定很难理解带有标题的主题,但是不要担心,阅读本文后,您的所有疑惑都将清除。其余内容全部涉及Ruby中的多态性以及语法和演示程序代码,以使您更好地理解。
我们都知道这一点,但让我再说一遍,多态是两个单词“ poly”和“ Morph”的加法。这里的“ poly”一词是指许多,而“ Morph”是指形式。因此,总的来说,我们可以说多态是一种事物具有多种形式的属性。在计算机术语SP中,可以将多态称为一种方法,在该方法中,用户可以调用传递不同对象作为参数的相同方法。
多态是一个属性,其中类具有不同类型的功能,但它们共享相同的接口。可以在两种子类别下研究多态性,即
在继承的帮助下实现多态
鸭式打字帮助多态
在本教程中,我们将仅在继承的帮助下研究多态性子类别。
首先让我们了解继承,这是子类继承父类属性的属性。
您可以在以下程序代码的帮助下,通过继承来了解多态的实现,
示例
=begin Ruby program to demonstrate polymorphism with Inheritance =end class Fruit def tastetype puts "Sour fruit." end end class Orange<Fruit def tastetype puts "Sour-Sweet Fruit" end end class Apple<Fruit def tastetype puts "Sweet Fruit" end end fruit = Fruit.new fruit.tastetype fruit = Orange.new fruit.tastetype fruit = Apple.new fruit.tastetype
输出结果
Sour fruit. Sour-Sweet Fruit Sweet Fruit
说明:
在上述代码的帮助下,您必须在Inheritance的帮助下对多态性有了清晰的了解。在这里,方法滋味类型是在对象Orange和Apple的帮助下调用的。Orange和Apple类具有相同的父类水果。astetype是他们从其父类Fruit继承的方法。
现在,让我们了解Duck Typing,这只是一个想法,它可以看到对象可以完成的工作,而不是对象可以完成的工作,换句话说,您可以说可以在对象而不是类上实现什么实例的
您可以在以下程序代码的帮助下,通过鸭子输入来了解多态性的实现,
示例
=begin Ruby program to demonstrate polymorphism using duck typing =end class College def enters puts "A student enters" end def type(student) student.type end def course(student) student.course end end class Ug def type puts "student is a under graduate student" end def course puts "BCA student" end end class Pg def type puts "student is a post graduate student" end def course puts "MCA student" end end college = College.new puts "This student is Under graduate" stu = Ug.new college.type(stu) college.course(stu) puts "This student is Post graduate" stu = Pg.new college.type(stu) college.course(stu)
输出结果
This student is Under graduate student is a under graduate student BCA student This student is Post graduate student is a post graduate student MCA student
说明:
在上述代码的帮助下,您必须借助Duck Typing清楚地了解了多态性。在这里,对象stu在使用College类的功能(例如其类型和课程)方面发挥着作用。