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

Mục lục:

Sự khác biệt giữa 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

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

Video: Sự khác biệt giữa Liên kết tĩnh và Liên kết động
Video: ĐỊA CHỈ IP LÀ GÌ? IP ĐỘNG LÀ GÌ? IP TĨNH LÀ GÌ? GIẢI THÍCH HỘ 2024, Tháng bảy
Anonim

Sự khác biệt chính - Liên kết tĩnh và Liên kết động

Ngôn ngữ lập trình như Java và Chỗ 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. Các đối tượng này có cá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ị yêu cầu được gửi thông 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ế nằm trong định nghĩa phương pháp. Có một liên kết giữa lời 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à ràng buộc tĩnh và ràng buộc động. Sự khác biệt chính giữa ràng buộc tĩnh và ràng buộc động là, trong ràng buộc tĩnh, ràng buộc được giải quyết tại thời điểm biên dịch trong khi ràng buộc động được giải quyết tại thời điểm chạy, đó là thời gian thực thi. 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.

Static Binding là gì?

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

Sự khác biệt giữa ràng buộc tĩnh và ràng buộc động
Sự khác biệt giữa ràng buộc tĩnh và ràng buộc động

Hình 01: Liên kết tĩnh và Liên kết động

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

công hạng A {

public void method1 () {

System.out.println (“Phương pháp 1”);

}

public void method2 () {

System.out.println (“Phương pháp 2”);

}

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 kiểu A được tạo. Sau đó method1 và method2 được gọi. Việc xác định phương thức nào nên gọi để thực thi được gọi là ràng buộc. Câu lệnh obj.method1 () sẽ gọi method1 () và obj.method2 () sẽ gọi method2 (). Liên kết này là ràng buộc.

Trong ràng buộc tĩnh, ràng buộc được trình biên dịch giải quyết tại thời điểm biên dịch. Nó còn được gọi là ràng buộc sớm. Ràng buộc 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á trình nạp chồng phương thức. Tham khảo chương trình dưới đây được viết bằng Java.

public void Tính toán {

public void sum (int x, int y) {

System.out.println (“Tổng là“, x + y);

}

public void sum (double x, double y) {

System.out.println (“Tổng là“, 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 tổng với hai giá trị kép. Tất cả thông tin bắt buộc đều được biết trước thời gian chạy, do đó, nó làm tăng hiệu quả của chương trình và tốc độ thực thi.

Dynamic Binding là gì?

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

public class Hình dạng () {

public void draw () {

System.out.println (“Vẽ hình”);

}

}

public class Vòng tròn () mở rộng Hình dạng {

public void draw () {

System.out.println (“Vẽ vòng tròn”);

}

}

public class Tam giác () kéo dài Hình dạng {

public void draw () {

System.out.println (“Vẽ hình tam giác”);

}

}

công khai lớp Kiểm tra {

public static void main (String args) {

Hình dạng s;

s=new Shape ();

s.draw ();

s=new Circle ();

s.draw ();

s=new Triangle ();

s.draw ();

}

}

Theo chương trình trên, lớp Shape có một phương thức draw (). Class Circle và class Triangle mở rộng lớp Shape. Class Circle và class Triangle có thể kế thừa các thuộc tính và phương thức của class Shape. 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 Hình dạng, 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 quá trình thực thi thực sự 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ẽ trỏ đến đối tượng kiểu Shape. Do đó, nó sẽ gọi phương thức draw trong lớp Shape. Sau đó, s sẽ trỏ đối tượng kiểu Circle, và nó sẽ gọi phương thức vẽ của lớp Circle. Cuối cùng, s sẽ tham chiếu đến đối tượng kiểu Triangle, và nó sẽ gọi phương thức draw trong lớp Triangle. Mặc dù biến tham chiếu có kiểu Shape, nhưng ràng buộc vẫn phụ thuộc vào kiểu đối tượng. Khái niệm này được gọi là Ràng buộc động. Thông tin được cung cấp tại thời điểm chạy, vì vậy tốc độ thực thi 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 là gì?

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

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

Ràng buộc tĩnh so với Ràng buộc động

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

Tóm tắt - Liên kết tĩnh và Liên kết động

Có một liên kết giữa lời 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 được gọi là ràng buộc tĩnh và ràng buộc động. Sự khác biệt giữa ràng buộc tĩnh và ràng buộc động là trong ràng buộc tĩnh, ràng buộc được giải quyết tại thời điểm biên dịch trong khi ràng buộc động được giải quyết tại thời điểm chạy, đó là thời gian thực thi. 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 thực thi nhanh hơn so với liên kết động.

Tải xuống bản PDF của Ràng buộc tĩnh và Ràng buộc độ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 các 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 Liên kết tĩnh và Liên kết động

Đề xuất: