在本文中,我們將學習 Java 中的執行時間多態性。 “Poly”的意思是“許多”,而“morph”的意思是“類型”。因此,術語“多態性”表示同一件事的不同類型。這裡我們將看到Java如何在執行時間歸檔多態性,這意味著,在編譯之後但在程式碼執行之前。
文法:
廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗對於Java中的執行時間多態性,您應該遵循帶有註解的java基本語法。
@Override
這裡可以使用註解來指出我們要具體覆蓋哪個方法。
運行時多態性在 Java 中如何運作?
運行時多態性在 Java 中透過方法重寫來運作。當物件與其父類別具有相同的方法名稱、參數和類型但具有不同的功能時,就會發生方法重寫。如果子類別中有這種類型的方法,我們稱之為重寫方法。
為什麼叫運行時多型?
當我們透過父類型引用呼叫子類別的重寫方法時(這種現像在java中稱為「Upcasting」),則物件的類型指示將呼叫哪個方法或功能。這個決定是在程式碼編譯後由 JVM 在執行時做出的。因此它被稱為運行時多態性。
它也稱為「動態方法調度」。之所以如此命名,是因為該方法的功能是在運行時由 JVM 根據物件動態決定的
也稱為“後期綁定”,因為方法和物件的綁定,即顯示哪個物件的方法的功能,是在後期決定的,即在編譯之後。
規則 且 Runtime 多態性
的限制以下是運行時多態性的一些規則和限制:
運行時多態規則
- 子類別和父類別的方法必須具有相同的名稱。
- 子類別和父類別的方法必須具有相同的參數。
- IS-A 關係是強制性的(繼承)。
運行時多態性的限制
- 不能重寫父類別的私有方法。
- 不能重寫 Final 方法。
- 不能重寫靜態方法。
Java 中運行時多態性的範例
我們將在這裡討論一些運行時多態性的程式碼範例。
範例#1
在這個範例中,我們將展示showcase() 方法如何根據與其關聯的物件類型顯示不同的訊息。當它與“Parents”類型關聯時,它顯示來自父類別的訊息。當它與“Children”類型關聯時,它會顯示來自子類別的訊息。
代碼:
class Parents { public void showcase () { System.out.println("I am Parent"); } } class Children extends Parents { @Override public void showcase () { System.out.println("I am Children"); } } public class RunTimePolymorphism { public static void main(String args[]) { Parents superObject = new Parents(); superObject.showcase(); //method of super class or parent class is called Parents subObject = new Children(); // upcasting subObject.showcase();//method of sub class or child class is called by Parent reference, this is called "Run time Polymorphism" Children subObject2 = new Children(); subObject2.showcase(); //method of sub class or child class is called } }
輸出:
範例#2
讓我們舉一個多層繼承情況下的運行時多態性的例子。在此範例中,我們考慮了兩個繼承等級。在此範例中,我們將展示方法 sip() 如何根據與其關聯的物件類型顯示不同的訊息。當它與“人類”類型關聯時,它顯示來自父類別的消息。當它與“Man”類型關聯時,它顯示來自其子類別的訊息。同樣,在繼承的第二級中,當與“Baby”類型關聯時,它顯示來自其父類別“Man”類別的子類別的訊息。
代碼:
class Human{ void sip() { System.out.println("Human is sipping"); } } class Man extends Human{ void sip(){ System.out.println("Man is sipping soup"); } } class Baby extends Man{ void sip(){ System.out.println("Baby is sipping milk"); } } public class RunTimePolymorphism { public static void main(String args[]){ Human superObject=new Human(); Human subObject=new Man(); // // upcasting : first level of heritance Human babyObject=new Baby(); // // upcasting : second level of heritance superObject.sip(); subObject.sip(); //run time polymorphism happening in first level of heritance babyObject.sip(); //run time polymorphism happening in second level of heritance } }
輸出:
範例#3
讓我們再舉一個多層繼承情況下運行時多態性的例子。在此範例中,我們考慮了三個繼承等級。在此範例中,我們將展示方法 feature () 如何根據與其關聯的物件類型顯示不同的功能。當它與“作業系統”類型關聯時,它顯示來自父類別的消息。當它與“DOS”類型關聯時,它顯示來自其子類別的訊息。同樣,在繼承的第二級中,當與“Windows”類型關聯時,它顯示來自其父類別“DOS”類別的子類別的訊息。同樣,在第三級繼承中,當與“WindowsMobile”類型關聯時,它顯示來自其父級“Windows”類別的子類別的訊息。
代碼:
class OperatingSytem{ void feature() { System.out.println("This is Operating Sytem"); } } class DOS extends OperatingSytem{ void feature(){ System.out.println("This is DOS"); } } class Windows extends DOS{ void feature(){ System.out.println("This is Windows"); } } class WindowsMobile extends Windows{ void feature(){ System.out.println("This is Windows Mobile"); } } public class RunTimePolymorphism { public static void main(String args[]){ OperatingSytem superObject=new OperatingSytem(); OperatingSytem subObject=new DOS(); // child object type : first level of heritance OperatingSytem sub2Object=new Windows(); // child object type : second level of heritance OperatingSytem sub3Object=new WindowsMobile(); // child object type : third level of heritance superObject.feature(); subObject.feature(); //run time polymorphism happening in first level of heritance sub2Object.feature(); //run time polymorphism happening in second level of heritance sub3Object.feature(); //run time polymorphism happening in third level of heritance } }
Output:
Conclusion
This concludes our learning of the topic “Runtime Polymorphism in Java”. Write yourself the codes mentioned in the above examples in the java compiler and verify the output. Learning of codes will be incomplete if you will not write code by yourself.
以上是Java 中的運行時多態性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Java主要用於構建桌面應用、移動應用、企業級解決方案和大數據處理。 1.企業級應用:通過JavaEE支持複雜應用,如銀行系統。 2.Web開發:使用Spring、Hibernate簡化開發,SpringBoot快速搭建微服務。 3.移動應用:仍是Android開發主要語言之一。 4.大數據處理:Hadoop和Spark基於Java處理海量數據。 5.遊戲開發:適用於中小型遊戲開發,如Minecraft。

如何將Java開發工具設置為中文界面?可以通過以下步驟實現:Eclipse:Window->Preferences->General->Appearance->I18nsupport->Language->Chinese(Simplified),然後重啟Eclipse。 IntelliJIDEA:Help->FindAction->輸入"switchlanguage"->選擇"SwitchIDELanguage&q

學習Java並達到工作水平通常需要6到12個月,對於有編程基礎的人可能縮短至3到6個月。 1)零基礎學習者需6-12個月掌握基礎和常用庫。 2)有編程基礎者可能3-6個月內掌握。 3)就業時間在學習9-18個月後,實際項目和實習可加速進程。

在Java中,new操作符用於創建對象,其過程包括:1)在堆內存中分配空間,2)初始化對象,3)調用構造函數,4)返回對象引用。理解這些步驟有助於優化內存使用和提升應用程序性能。

在Java中定義數組的語法是:1.數據類型[]數組名=new數據類型[數組長度];2.數據類型數組名[]=new數據類型[數組長度];3.數據類型[]數組名={元素列表};數組是對象,可為null,下標從0開始,使用時需注意潛在的錯誤如NullPointerException和ArrayIndexOutOfBoundsException。

new關鍵字在Java中用於創建對象實例。 1)它告訴JVM分配內存並調用構造函數初始化對象。 2)使用new可以強制創建新對象,即使內容相同。 3)構造函數允許自定義初始化。 4)頻繁使用new可能導致性能問題和內存洩漏。 5)需要使用try-catch處理可能的異常。 6)匿名內部類是new的高級用法。

解決Java中的中文亂碼問題可以通過以下步驟:1.設置正確的字符編碼,如UTF-8或GBK,確保文件、數據庫和網絡通信使用相同編碼。 2.使用Java的字符編碼轉換類進行必要的編碼轉換。 3.通過調試工具和日誌驗證編碼是否正確,確保在不同環境下中文顯示正常。

Java中的異常分為檢查型異常和非檢查型異常。檢查型異常必須顯式處理,否則編譯器報錯,常用於可恢復錯誤,如文件未找到;非檢查型異常無需顯式處理,常用於編程錯誤,如空指針異常。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

Dreamweaver CS6
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境