Sự khác biệt giữa liên kết tĩnh và liên kết động

Sự khác biệt chính - Tĩnh Binding vs Dynamic Binding
 

Các ngôn ngữ lập trình như Java và C # hỗ trợ Lập trình hướng đối tượng (OOP). Nó cho phép xây dựng phần mềm bằng cách sử dụng các đối tượng. Có nhiều đối tượng trong một hệ thống phần mềm hoặc một chương trình. Những đối tượng này có thuộc tính và phương thức. Các thuộc tính mô tả các đặc điểm. Các phương thức mô tả các hành động có thể được thực hiện bởi đối tượng. Dữ liệu được truyền qua các đối tượng bằng các phương thức. Các giá trị cần thiết được gửi qua các cuộc gọi phương thức với các tham số. Việc thực hiện phương pháp thực tế là trong định nghĩa phương thức. Có một liên kết giữa một cuộc gọi phương thức và định nghĩa phương thức. Nó được gọi là ràng buộc. Có hai loại ràng buộc. Chúng là liên kết tĩnh và ràng buộc động. Các sự khác biệt chính giữa ràng buộc tĩnh và ràng buộc động là, trong liên kết tĩnh, liên kết được giải quyết tại thời điểm biên dịch trong khi liên kết động được giải quyết tại thời gian chạy, đó là thời gian thực hiện thực tế. Bài viết này thảo luận về sự khác biệt giữa hai cơ chế ràng buộc này.

NỘI DUNG

1. Tổng quan và sự khác biệt chính
2. Liên kết tĩnh là gì
3. Liên kết động là gì
4. Điểm tương đồng giữa liên kết tĩnh và liên kết động
5. So sánh cạnh nhau - Ràng buộc tĩnh so với ràng buộc động ở dạng bảng
6. Tóm tắt

Liên kết tĩnh là gì?

Binding là liên kết giữa một cuộc gọi phương thức và định nghĩa phương thức.

Hình 01: Ràng buộc tĩnh và liên kết động

Tham khảo chương trình dưới đây được viết bằng Java.

lớp A

phương thức void công khai1 ()

System.out.println (Phương thức11);

công khai void phương thức2 ()

System.out.println (Phương thức22);

public static void main (String [] args)

A obj = new A ();

obj.method1 ();

obj.method2 ();

Theo chương trình trên, một đối tượng loại A được tạo ra. Sau đó phương thức1 và phương thức 2 được gọi. Xác định phương thức nào sẽ gọi để thực thi được gọi là ràng buộc. Câu lệnh obj.method1 () sẽ gọi phương thức1 () và obj.method2 () sẽ gọi phương thức2 (). Liên kết này là ràng buộc.

Trong liên kết tĩnh, liên kết được giải quyết tại thời gian biên dịch bởi trình biên dịch. Nó còn được gọi là ràng buộc sớm. Binding xảy ra trước khi một chương trình thực sự chạy. Liên kết tĩnh xảy ra trong quá tải phương thức. Tham khảo chương trình dưới đây được viết bằng Java.

công khai tính toán

công cộng void sum (int x, int y)

System.out.println (Sum Sum là Số, x + y);

công cộng void sum (double x, double y)

System.out.println (Sum Sum là Số, x + y);

public static void main (String [] args)

Tính toán cal = tính toán mới ();

cal.sum (2,3);

cal.sum (5.1, 6.4);

Theo chương trình trên, khi truyền hai số nguyên, phương thức có hai số nguyên sẽ được gọi. Khi truyền hai giá trị kép, phương thức tương ứng với hai giá trị kép sẽ được gọi. Quá trình ràng buộc này xảy ra tại thời điểm biên dịch. Trình biên dịch biết rằng nó nên gọi phương thức sum với hai giá trị nguyên cho cal.sum (2,3). Đối với cal (5.1,6.4), nó sẽ gọi phương thức sum có hai giá trị kép. Tất cả thông tin cần thiết được biết trước khi chạy, vì vậy nó làm tăng hiệu quả chương trình và tốc độ thực hiện.

Liên kết động là gì?

Trong Dynamic Binding, trình biên dịch không giải quyết ràng buộc tại thời gian biên dịch. Liên kết xảy ra trong thời gian chạy. Nó còn được gọi là Ràng buộc muộn. Binding động xảy ra trong phương thức ghi đè. Tham khảo chương trình viết bằng Java.

lớp công khai Shape ()

công khai void draw ()

System.out.println (Bản vẽ hình chữ nhật);

lớp công cộng Circle () mở rộng Hình dạng

công khai void draw ()

System.out.println (Vòng tròn Vẽ Rút gọn);

lớp công khai Tam giác () mở rộng Hình dạng

công khai void draw ()

System.out.println (Tam giác vẽ tam giác);

Kiểm tra lớp học công cộng

public static void main (String [] args)

Hình dạng;

s = Hình dạng mới ();

s.draw ();

s = Vòng tròn mới ();

s.draw ();

s = Tam giác mới ();

s.draw ();

Theo chương trình trên, lớp Shape có phương thức draw (). Lớp Circle và lớp Tam giác mở rộng lớp Shape. Lớp Vòng tròn và Tam giác lớp có thể kế thừa các thuộc tính và phương thức của Hình dạng lớp. Do đó, lớp Shape là lớp siêu hoặc lớp cha. Class Circle và Class Triangle là các lớp con hoặc lớp dẫn xuất. Các lớp này cũng có phương thức draw () với các triển khai riêng của chúng. Do đó, phương thức draw () trong siêu lớp bị ghi đè.

Trong phương thức chính, các đối tượng khác nhau được gọi. Có một biến tham chiếu của loại Shape, đó là s. Sau đó, s gọi phương thức theo lớp cụ thể. Tại thời điểm biên dịch, trình biên dịch sẽ chỉ tham chiếu phương thức vẽ siêu lớp. Khi thực hiện thực tế bắt đầu, nó sẽ dẫn đến việc thực hiện các phương thức vẽ khác nhau. Đầu tiên, s sẽ được trỏ đến đối tượng của Shape. Do đó, nó sẽ gọi phương thức vẽ trong lớp Shape. Sau đó, s sẽ trỏ đối tượng của kiểu Circle và nó sẽ gọi phương thức vẽ của lớp Circle. Cuối cùng, s sẽ đề cập đến đối tượng của loại Tam giác và nó sẽ gọi phương thức vẽ trong lớp Tam giác. Mặc dù biến tham chiếu có kiểu Shape, liên kết xảy ra phụ thuộc vào loại đối tượng. Khái niệm này được gọi là Liên kết động. Thông tin được cung cấp trong thời gian chạy, do đó tốc độ thực hiện chậm hơn so với liên kết tĩnh.

Sự giống nhau giữa liên kết tĩnh và liên kết động?

  • Cả hai đều liên quan đến đa hình cho phép một đối tượng hành xử theo nhiều cách.

Sự khác biệt giữa liên kết tĩnh và liên kết động?

Liên kết tĩnh vs Liên kết động

Liên kết tĩnh là loại liên kết thu thập tất cả thông tin cần thiết để gọi hàm trong thời gian biên dịch. Liên kết động là loại liên kết thu thập tất cả thông tin cần thiết để gọi hàm trong thời gian chạy.
 Thời gian đóng sách
Liên kết tĩnh xảy ra tại thời điểm biên dịch. Liên kết động xảy ra trong thời gian chạy.
Chức năng
Liên kết tĩnh sử dụng thông tin loại để liên kết. Dynamic Binding sử dụng các đối tượng để giải quyết liên kết.
 Đối tượng thực tế
Liên kết tĩnh không sử dụng một đối tượng thực tế để liên kết. Liên kết động, sử dụng đối tượng thực tế để liên kết.
Từ đồng nghĩa
Liên kết tĩnh còn được gọi là liên kết sớm. Liên kết động còn được gọi là liên kết muộn.
Chấp hành
Tốc độ thực hiện nhanh trong liên kết tĩnh. Tốc độ thực hiện thấp trong ràng buộc động.
Thí dụ
Liên kết tĩnh được sử dụng trong nạp chồng phương thức. Liên kết động được sử dụng trong phương thức ghi đè.

Tóm tắt - Tĩnh Binding vs Dynamic Binding 

Có một liên kết giữa một cuộc gọi phương thức và định nghĩa phương thức. Nó được gọi là ràng buộc. Có hai loại ràng buộc gọi là liên kết tĩnh và liên kết động. Sự khác biệt giữa liên kết tĩnh và liên kết động là trong liên kết tĩnh, liên kết được giải quyết tại thời điểm biên dịch trong khi liên kết động được giải quyết tại thời gian chạy, là thời gian thực hiện thực tế. Vì thông tin bắt buộc được cung cấp trước thời gian chạy, liên kết tĩnh được thực hiện nhanh so với ràng buộc động.

Tải xuống bản PDF của Binding tĩnh so với Binding động

Bạn có thể tải xuống phiên bản PDF của bài viết này và sử dụng nó cho mục đích ngoại tuyến theo ghi chú trích dẫn. Vui lòng tải xuống phiên bản PDF tại đây: Sự khác biệt giữa Binding tĩnh và Binding động

Tài liệu tham khảo:

1.Java Interview 04 - Binding tĩnh Vs Binding Dynamic, Mahika Tutorials, 27/12/2017. Có sẵn tại đây