在本文中,我們將學習 Java 中的執行時間多態性。 “Poly”的意思是“許多”,而“morph”的意思是“類型”。因此,術語“多態性”表示同一件事的不同類型。這裡我們將看到Java如何在執行時間歸檔多態性,這意味著,在編譯之後但在程式碼執行之前。
文法:
廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗對於Java中的執行時間多態性,您應該遵循帶有註解的java基本語法。
@Override
這裡可以使用註解來指出我們要具體覆蓋哪個方法。
運行時多態性在 Java 中透過方法重寫來運作。當物件與其父類別具有相同的方法名稱、參數和類型但具有不同的功能時,就會發生方法重寫。如果子類別中有這種類型的方法,我們稱之為重寫方法。
當我們透過父類型引用呼叫子類別的重寫方法時(這種現像在java中稱為「Upcasting」),則物件的類型指示將呼叫哪個方法或功能。這個決定是在程式碼編譯後由 JVM 在執行時做出的。因此它被稱為運行時多態性。
它也稱為「動態方法調度」。之所以如此命名,是因為該方法的功能是在運行時由 JVM 根據物件動態決定的
也稱為“後期綁定”,因為方法和物件的綁定,即顯示哪個物件的方法的功能,是在後期決定的,即在編譯之後。
以下是運行時多態性的一些規則和限制:
我們將在這裡討論一些運行時多態性的程式碼範例。
在這個範例中,我們將展示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 } }
輸出:
讓我們舉一個多層繼承情況下的運行時多態性的例子。在此範例中,我們考慮了兩個繼承等級。在此範例中,我們將展示方法 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 } }
輸出:
讓我們再舉一個多層繼承情況下運行時多態性的例子。在此範例中,我們考慮了三個繼承等級。在此範例中,我們將展示方法 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:
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中文網其他相關文章!