在Ruby中使用继承进行多态
Ruby|使用继承的多态
在本教程中,我们将研究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继承的方法。
现在,让我们了解DuckTyping,这只是一个想法,它可以看到对象可以完成的工作,而不是对象可以完成的工作,换句话说,您可以说可以在对象而不是类上实现什么实例的
您可以在以下程序代码的帮助下,通过鸭子输入来了解多态性的实现,
示例
=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
说明:
在上述代码的帮助下,您必须借助DuckTyping清楚地了解了多态性。在这里,对象stu在使用College类的功能(例如其类型和课程)方面发挥着作用。