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();
}
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP