編譯時多型與執行時多型之間的區別
多型是其中之一,也是最重要的 面向物件(OOP)概念。這是一個概念,我們可以透過多種方式執行單個任務。有兩種多型,一種是編譯時多型,另一種是執行時多型。
方法過載是編譯時多型的一個例子,方法重寫是執行時多型的一個例子。
序號 | 鍵 | 編譯時多型 | 執行時多型 |
---|---|---|---|
1 | 基礎 | 編譯時多型表示繫結發生在編譯時 | 在執行時我們才知道將呼叫哪個方法 |
2 | 靜態/動態繫結 | 可以透過靜態繫結實現 | 可以透過動態繫結實現 |
4. | 繼承 | 不涉及繼承 | 涉及繼承 |
5 | 示例 | 方法過載是編譯時多型的示例 | 方法重寫是執行時多型的示例 |
編譯時多型的示例
public class Main { public static void main(String args[]) { CompileTimePloymorphismExample obj = new CompileTimePloymorphismExample(); obj.display(); obj.display("Polymorphism"); } } class CompileTimePloymorphismExample { void display() { System.out.println("In Display without parameter"); } void display(String value) { System.out.println("In Display with parameter" + value); } }
執行時多型的示例
public class Main { public static void main(String args[]) { RunTimePolymorphismParentClassExample obj = new RunTimePolymorphismSubClassExample(); obj.display(); } } class RunTimePolymorphismParentClassExample { public void display() { System.out.println("Overridden Method"); } } public class RunTimePolymorphismSubClassExample extends RunTimePolymorphismParentExample { public void display() { System.out.println("Overriding Method"); } }
廣告