📜  斯卡拉 |多态性

📅  最后修改于: 2022-05-13 01:55:21.341000             🧑  作者: Mango

斯卡拉 |多态性

多态性是任何数据以一种以上的形式处理的能力。这个词本身表示的意思是poly意味着许多和morphism表示类型。 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:120
Second Execution:120
Third Execution:300

在上面的示例中,我们有三个名称相同(func)但参数不同的函数。

示例 #2:

// Scala program to illustrate polymorphism
// concept
class example2
{ 
    // 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 example2(); 
        A.func("swift", "hatchback"); 
        A.func("honda-city", "sedan"); 
        A.func("Ashok", 95);
        A.func(10, 20);
    } 
} 

输出:

The Vehicle is:swift
The Vehicle category is:hatchback
The Vehicle is:honda-city
The Vehicle category is:sedan
Student Name is:Ashok
Marks obtained are:95
Sum is:30