編譯時多型與執行時多型之間的區別
多型是其中之一,也是最重要的 面向物件(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"); } }
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP