Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khác biệt giữa Static Binding và Dynamic Binding trong Java

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
    }
}