Binding là cơ chế tạo liên kết giữa lời gọi phương thức (method call) và triển khai thực tế của phương thức (method implementation). Theo khái niệm đa hình (polymorphism) trong Java, object có nhiều hình thức khác nhau. Hình thức object có thể giải quyết tại compile time và run time. Nếu liên kết giữa method call và method implementation được giải quyết tại compile time gọi là static binding; nếu tại run time gọi là dynamic binding. Dynamic binding dùng object để giải quyết binding, static binding dùng kiểu của class và field.
| STT | Tiêu chí | Static Binding | Dynamic Binding |
|---|---|---|---|
| 1 | Cơ bản | Giải quyết tại compile time | Giải quyết tại run time |
| 2 | Cơ chế giải quyết | Dùng kiểu class và field | Dùng object |
| 3 | Ví dụ | Overloading (nạp chồng) là ví dụ static binding | Method overriding (ghi đè) là ví dụ dynamic binding |
| 4 | Loại phương thức | private, final, static methods và variables dùng static binding | Virtual methods dùng dynamic binding |
Ví dụ Static và Dynamic Binding
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(); // Static binding
FastFood pza = new Pizza();
pza.create(); // Dynamic binding
}
}