Java中的多態類型[靜態和動態多態與示例]
已發表: 2021-06-18目錄
Java中的多態是什麼?
面向對象編程 (OOP) 中的一個重要概念是多態性,這意味著可以以不同的方式執行單個操作。 它源自希臘語:poly 和 morphs 表示許多和形式。 當它們通過繼承相關時存在不同的形式。
與從不同類繼承方法和屬性的繼承一樣,多態應用這些方法並執行不同的任務。 一個對象能夠通過多態性將自己塑造成各種形式。
也就是說,一個實體可以在不同的場景下執行不同的操作。 多態性在面向對象編程中最常見的用途之一是使用父類引用來引用子類對象。 閱讀有關各種 OOP 概念和示例的更多信息。
Java中的多態可以通過三種方式實現:
方法覆蓋:如果超類和子類包含相同的方法,則方法覆蓋是指子類中的方法覆蓋超類中的方法的過程。 因此,相同的方法將在不同的條件下執行不同的操作。
程序的輸出:
Java 編程語言
通用英語
- 方法重載:方法重載是指創建具有相同名稱但具有不同參數的方法的過程。 示例包括:void func() { ... }、void func(int a) { ... }、float func(double a) { ... }、float func(int a, float b) { ... }。
輸出
**********
##########
- 運算符重載:運算符重載是 Java 中的一個概念,其中運算符對不同的操作數表現不同。 示例包括:
- 運算符“+”可用於數字加法和字符串連接。
數值加法 | 字符串連接 |
int a = 5; 詮釋 b = 6; 整數總和 = a + b; // 輸出 = 11 | 字符串優先=“Python”; 字符串第二 = “編程”; 姓名 = 第一個 + 第二個; // 輸出 = Python 編程 |
- 運算符 &、| 和 ! 可用於邏輯和按位重載。
Java中的多態類型
面向對象編程關註四個基本概念,即抽象、封裝、繼承和多態。 多態性是根據對象的類和數據類型以不同方式處理對象的能力。
Java中有兩種類型的多態性: Java 中的編譯時多態性和運行時多態性。 這種java多態也稱為靜態多態和動態多態。
1. 靜態多態(或編譯時多態)
與大多數其他 OOP 編程語言一樣, Java 多態性允許在一個類中合併多個方法。 這些方法使用相同的名稱,但參數不同。 這代表了靜態多態性。 這種多態性在編譯器期間解決,並通過方法重載實現。 提供了三個標準,其中參數集必須不同:
- 參數編號應有所不同。
- 參數類型應該不同。
- 參數順序不同。 例如,如果一個方法接受一個字符串和一個 long,而另一個方法接受一個 long 和一個字符串。 但是,這種類型的順序使 API 難以理解。
由於參數的不同,每個方法都有不同的簽名。 Java 編譯器知道調用哪個方法。
從世界頂級大學在線學習軟件課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
靜態多態性示例
Java 支持靜態多態的方法之一是方法重載。 下圖展示了靜態多態中方法重載的例子:
例子:
類 SimpleCalculator
{
int add(int a, int b)
{
返回 a+b;
}
int add(int a, int b, int c)
{
返回 a+b+c;
}
}
公開課Demo
{
公共靜態無效主(字符串參數 [])
{
簡單計算器 obj = new SimpleCalculator();
System.out.println(obj.add(25, 25));
System.out.println(obj.add(25, 25, 30));
}
}
程序的輸出
50
80
2.動態多態性(或Java中的運行時多態性)
在java中的這種多態形式中,編譯器不會確定要執行的方法。 它是在運行時執行進程的 Java 虛擬機 (JVM)。 動態多態性是指在運行時解決對覆蓋進程的調用時的進程。 超類的引用變量調用被覆蓋的方法。 由子類和超類實現的方法在共享相同名稱的同時提供不同的功能。
在理解運行時多態性的概念之前,理解向上轉型的過程是至關重要的。 向上轉型是指子類的對像被超類的引用變量引用的過程。 了解 PHP 中的多態性。
動態多態性(或運行時)示例
示例 1:
創建了兩個類 Bike 和 Splendor,並且 Splendor 類擴展了 Bike 類,覆蓋了它的 run() 方法。 run() 方法由父類的引用變量調用。 由於子類方法覆蓋了父類方法; 子類方法在運行時調用。
該程序
類自行車{
無效運行(){System.out.println(“運行”);}
}
類輝煌擴展自行車{
void run(){System.out.println(“安全行走 30 公里”);}
民眾 靜止的 無效的主要(字符串參數[]){
Bike b = new Splendor();//向上轉型
b.運行();
}
}
輸出:安全行走60km
示例 2
創建了兩個名為“ABC”和“XYZ”的類,其中 XYZ 是子類,ABC 是父類。 在這裡,父類的方法 myMethod() 被子類覆蓋。 子類對像被分配給父類引用。
程序:
ABC類{
公共無效我的方法(){
System.out.println(“重寫方法”);
}
}
公共類 XYZ 擴展 ABC{
公共無效我的方法(){
System.out.println(“覆蓋方法”);
}
公共靜態無效主要(字符串參數[]){
ABC obj = 新 XYZ();
obj.myMethod();
}
}
輸出
覆蓋方法
結論
java中多態的概念是面向對象編程中最有用的特性之一。 此外,在靜態和運行時調用方法的能力擴大了它的適用性。
引入多態性概念背後的想法是靈活性。 此外,在單個參考變量中處理大量對象的能力使編碼更容易一些。 因此,應該在日常編碼任務中使用該概念並接受其有效性。
如果你想了解更多關於軟件技術、它的開發以及它背後的機制,你可以查看 upGrad 提供的課程 Executive PG Program in Software Development – Specialization in Full Stack Development。 專業化課程是一個為期 23 週的在線課程,提供 300 多個案例研究,以提高您的知識和可用工具和編程語言,從而提高您的實踐技能。 如果您對課程有任何疑問,請給我們留言。 我們的團隊將與您聯繫。