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

Bài viết gần đây

Tìm hiểu về instanceof trong JAVA

Một vài ví dụ đơn giản để bạn hiểu hơn về toán tử instanceof trong Java. Cũng như cách sử dụng instanceof trong thực tế như thế nào.

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

Tìm hiểu về Đa hình trong JAVA

Đa hình (Polymorphism) trong Java là một khái niệm để chỉ những hành động có thể thực hiện theo nhiều cách khác nhau.

Từ khóa FINAL trong JAVA

Từ khóa final có thể được áp dụng với các biến, một biến final không có giá trị, nó được gọi là biến final trống hoặc biến cuối cùng chưa được khởi tạo.

Khối Khởi tạo thể hiện trong JAVA

Khối khởi tạo thể hiện được sử dụng để khởi tạo các biến thể hiện. Nó chạy mỗi lần khi đối tượng của lớp được tạo.

Ví dụ sử dụng từ khóa Super trong JAVA

Để hiểu cụ thể từ khóa super trong Java làm việc như thế nào, chúng ta cùng đi qua các ví dụ bên dưới đây:

Leave a reply

Please enter your comment!
Please enter your name here