Java 中的靜態繫結和動態繫結的區別
繫結是建立方法呼叫和方法實際實現之間的連結的一種機制。根據 Java 中的多型概念,一個物件可以有許多不同的形式。物件的各個形式可以在編譯時和執行時解決。如果在編譯時確定方法呼叫和方法實現之間的連結,那麼我們稱之為靜態繫結。如果在執行時確定,那麼就叫做動態繫結。動態繫結使用物件來解決繫結,但靜態繫結使用類和欄位的型別。
序號 | 要點 | 靜態繫結 | 動態繫結 |
---|---|---|---|
1 | 基本 | 在編譯時解決 | 在執行時解決 |
2 | 解決機制 | 靜態繫結使用類和欄位的型別 | 動態繫結使用物件來解決繫結 |
3 | 示例 | 過載是靜態繫結的一個示例 | 方法覆蓋是動態繫結的示例 |
4. | 方法的型別 | 私有的、final 和 static 方法和變數使用靜態繫結 | 虛方法使用動態繫結 |
靜態和動態繫結的示例
public class FastFood { public void create() { System.out.println("Creating in FastFood class"); } } public class Pizza extends FastFood { public void create() { System.out.println("Creating in Pizza class"); } } public class Main { public static void main(String[] args) { FastFood fastFood= new FastFood(); fastFood.create(); //Dynamic binding FastFood pza= new Pizza(); pza.create(); } }
廣告