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

4 Loại Access Modifiers trong JAVA

Access Modifiers trong Java chỉ định khả năng / cấp độ truy cập hoặc phạm vi của một field, method, constructor hoặc class. Có 4 loại: private, default, protected, public

Package trong JAVA

Package trong Java có thể được phân loại theo hai dạng, built-in package (có sẵn) và user-defined package (gói do người dùng định nghĩa)

Sự khác biệt giữa Abstract Class và Interface

Cả Abstract class và Interface đều được sử dụng để đạt được sự trừu tượng nơi chúng ta có thể khai báo các phương thức trừu tượng. Cả Abstract class và Interface đều không thể được khởi tạo.

Interface trong JAVA

Interface trong Java là một cơ chế để đạt được sự trừu tượng. Có thể chỉ có các phương thức trừu tượng trong Interface, không có phần thân phương thức

Abstract class trong JAVA

Trừu tượng là một quá trình ẩn các chi tiết triển khai và chỉ hiển thị chức năng cho người dùng. Cùng mình học cách sử dụng Abstract class trong Java

Hướng dẫn tải và Cài đặt Java cho Windows 10 (Chi tiết)

Bài viết này mình sẽ hướng dẫn bạn cách tải và cài đặt Java cho Windows 10 để học lập trình Java.

Leave a reply

Please enter your comment!
Please enter your name here