Static Binding và Dynamic Binding trong Java

0
7478
Static Binding và Dynamic Binding trong Java

Bạn đang tìm hiểu về Binding trong Java?

Về cơ bản, việc kết nối một cuộc gọi phương thức đến phần thân phương thức được gọi là Binding.

Và chúng ta có hai loại Binding:

  • Static Binding
  • Dynamic Binding
Static Binding và Dynamic Binding trong Java
Static Binding và Dynamic Binding trong Java

Trước tiên, để hiểu về Binding trong Java, chúng ta cần:

Nhắc lại về kiểu trong Java

1. Kiểu biến trong Java

Mỗi biến trong Java có một kiểu dữ liệu, nó có thể là nguyên thủy và không nguyên thủy.

int diem = 10; 

Ở đây, biến diem là một kiểu int.

2. Kiểu tham chiếu trong Java

Hãy xem kiểu tham chiếu trong ví dụ sau:

class Cho{  
  public static void main(String args[]){  
    Cho cauVang;
  }  
}

Ở đây, biến tham chiếu cauVang là kiểu của Cho

3. Kiểu đối tượng trong Java

Một đối tượng là một thể hiện của lớp Java cụ thể, nhưng nó cũng là một thể hiện của lớp cha của nó.

class DongVat{}  
  
class Cho extends DongVat{  
  public static void main(String args[]){  
    Dog cauVang = new Cho();  
  }  
}

Ở đây, cauVang là một thể hiện của lớp Cho, nhưng nó cũng là một thể hiện của lớp DongVat.

>> Xem thêm: Các kiểu dữ liệu trong Java

Sự khác nhau giữa Static Binding và Dynamic Binding

Sự khác nhau giữa Static Binding và Dynamic Binding
Sự khác nhau giữa Static Binding và Dynamic Binding

Ví dụ về Static Binding trong Java

Khi kiểu của đối tượng được xác định tại thời điểm biên dịch (bởi trình biên dịch), nó được gọi là static binding.

Nếu có bất kỳ phương thức private, final hoặc static trong một lớp, chúng là static binding.

Ví dụ về Static Binding:

class Cho{  
  private void an(){
    System.out.println("Đang ăn...");
  }  
  
  public static void main(String args[]){  
    Dog cauVang = new Cho();  
    cauVang.an();  
  }  
}  

Kết quả khi chạy chương trình là:

Đang ăn...

Ví dụ về Dynamic Binding trong Java

Khi kiểu của đối tượng được xác định tại thời điểm chạy, nó được gọi là Dynamic Binding.

Ví dụ về Dynamic Binding:

class DongVat{  
  void an(){
    System.out.println("Đang ăn...");
  }  
}  
  
class Cho extends DongVat{  
  void an(){
    System.out.println("Đang gặm xương...");
  }  
  
  public static void main(String args[]){  
    DongVat cauVang = new Cho();  
    cauVang.an();  
  }  
} 

Khi chạy chương trình, kết quả nhận được là:

Đang gặm xương...

Trong ví dụ trên, kiểu của đối tượng không thể được xác định bởi trình biên dịch, vì thể hiện của Cho cũng là một thể hiện của DongVat.

Vì thế, trình biên dịch không biết kiểu của nó, chỉ đến khi chạy (runtime) thì mới xác định.

Bạn đã hiểu về Static Binding và Dynamic Binding trong Java chưa?

Trên đây là giới thiệu ngắn gọn về Static BindingDynamic Binding trong Java.

Hi vọng bạn hiểu hơn về 2 khái niệm này để biết mà chém gió trong các buổi trà đá.

>> Tham khảo: Khóa học Lập trình Java (Fullstack)

>> Hoặc: Tự học lập trình Java (trong 1 bài viết)

Chúc bạn học thành công ngôn ngữ Java.

JavaDEV