Scala多态性介绍和用法指南

多态性
是指以多种形式处理任何数据的能力。这个词本身的意思是

Scala多态性介绍和用法指南

文章图片
意味着很多
Scala多态性介绍和用法指南

文章图片
表示类型。 Scala通过虚函数, 重载函数和重载运算符实现多态。多态是面向对象编程语言最重要的概念之一。当使用父类引用来引用子类对象时, 多态性在面向对象的编程中最常见的用法发生了。在这里, 我们将看到如何以多种类型和多种形式表示任何功能。现实生活中多态的例子, 一个人在同一时间可以扮演不同的角色。就像一个女人在同一时间是母亲, 妻子, 雇员和女儿。因此, 同一个人必须具有许多功能, 但必须根据情况和条件实施每个功能。多态被认为是面向对象编程的重要特征之一。在Scala中, 该函数可以应用于多种类型的参数, 或者该类型可以具有多种类型的实例。
多态性有两种主要形式:
  • 子类型化:在子类型化中, 子类的实例可以传递给基类
  • 泛型:通过类型参数化, 可以创建函数或类的实例。
以下是一些示例:
范例1:
// Scala program to shows the usage of // many functions with the same name class example { // This is the first function with the name fun def func(a : Int) { println( "First Execution:" + a); } // This is the second function with the name fun def func(a : Int, b : Int) { var sum = a + b; println( "Second Execution:" + sum); } // This is the first function with the name fun def func(a : Int, b : Int, c : Int) { var product = a * b * c; println( "Third Execution:" + product); } } // Creating object object Main { // Main method def main(args : Array[String]) { // Creating object of example class var ob = new example(); ob.func( 120 ); ob.func( 50 , 70 ); ob.func( 10 , 5 , 6 ); } }

输出如下:
First Execution:120Second Execution:120Third Execution:300

在上面的示例中, 我们有三个函数, 它们的名称相同(func), 但参数不同。
【Scala多态性介绍和用法指南】范例2:
// Scala program to illustrate polymorphism // concept class example 2 { // Function 1 def func(vehicle : String, category : String) { println( "The Vehicle is:" + vehicle); println( "The Vehicle category is:" + category); } // Function 2 def func(name : String, Marks : Int) { println( "Student Name is:" + name); println( "Marks obtained are:" + Marks); } // Function 3 def func(a : Int, b : Int) { var Sum = a + b; println( "Sum is:" + Sum) }} // Creating object object Main { // Main method def main(args : Array[String]) { var A = new example 2 (); A.func( "swift" , "hatchback" ); A.func( "honda-city" , "sedan" ); A.func( "Ashok" , 95 ); A.func( 10 , 20 ); } }

输出如下:
The Vehicle is:swiftThe Vehicle category is:hatchbackThe Vehicle is:honda-cityThe Vehicle category is:sedanStudent Name is:AshokMarks obtained are:95Sum is:30

    推荐阅读