Sự khác biệt giữa lớp trừu tượng và giao diện trong Java

Lớp trừu tượng vs Giao diện trong Java

Để hiểu được sự khác biệt giữa lớp trừu tượng và giao diện trong Java, điều quan trọng trước tiên là phải hiểu từng thứ một cách độc lập. Lớp trừu tượng trong Java được sử dụng để khai báo các lớp con với một tập hợp các đặc điểm chung. Việc sử dụng phổ biến của lớp trừu tượng là một siêu lớp của các lớp khác, thực tế, cho phép nó mở rộng lớp trừu tượng. Một từ khóa trừu tượng được sử dụng trong khai báo của một lớp trừu tượng. Cũng giống như bất kỳ lớp nào khác, lớp trừu tượng có các trường mô tả các phương thức và đặc tính mà lớp có thể thực hiện. Bằng cách khai báo đơn thuần của một lớp trừu tượng, lớp không thể được bắt đầu

Một giao diện Java có thể được đánh đồng với một giao thức. Nó đại diện cho một hành vi được cài sẵn và thỏa thuận cho phép tạo thuận lợi cho sự tương tác của các đối tượng không liên quan. Tùy thuộc vào người dùng, giao diện giữ chìa khóa cho các hành động khác nhau đang được thực hiện. Giao diện, do đó, phục vụ như một liên kết giữa nhà sản xuất và người tiêu dùng. Do đó, các giao diện trong Java là một nhóm các phương thức chứa các phần tử rỗng có thể có các khai báo không đổi. Khi hiển thị một lớp cho giao diện Java, điều đó có nghĩa là hành vi được mong đợi của lớp đó là việc thực hiện tất cả các phương thức của giao diện.


Sự khác biệt

Trước hết, một lớp trừu tượng cho phép các trường không tĩnh hoặc cuối cùng trái ngược với các trường tĩnh và cuối cùng được sử dụng trong các giao diện. Các giao diện không thể có bất kỳ mã triển khai nào được sử dụng trong chúng và có thể có mã triển khai được sử dụng trong lớp trừu tượng. Các mã triển khai được đưa ra trong lớp trừu tượng có thể có một vài hoặc tất cả các phương thức được thực hiện. Theo mặc định, tất cả các phương thức của giao diện là trừu tượng.

Khả năng hiển thị cũng có thể cho các phương thức hoặc thành viên của một lớp trừu tượng có thể thay đổi như công khai, được bảo vệ, riêng tư hoặc không có. Mặt khác, khả năng hiển thị của giao diện chỉ có thể được đặt trước ở một chế độ hiển thị là công khai.

Một lớp trừu tượng sẽ tự động kế thừa lớp đối tượng. Điều này, về hiệu quả, có nghĩa là các phương thức như clone () và equals () được bao gồm. Trong một giao diện, không có sự kế thừa của lớp đối tượng là có thể. Theo đó, lớp trừu tượng có khả năng có một hàm tạo, nhưng một giao diện không thể có một.

Giao diện trong Java cũng có một chức năng rất quan trọng với việc thực hiện nhiều kế thừa do một lớp chỉ có thể có một siêu lớp. Mặc dù chỉ có một siêu lớp có thể có mặt, nhưng nó có thể được thực hiện trong bất kỳ số lượng giao diện nào. Không thể có nhiều kế thừa trong một lớp trừu tượng.

Trong hiệu năng, các giao diện có xu hướng chậm triển khai hơn so với lớp trừu tượng chủ yếu là do hướng bổ sung của việc tìm phương thức tương ứng trong một lớp. Tuy nhiên, sự khác biệt đã trở nên chậm hơn do các máy ảo Java hiện đại liên tục được nâng cấp.

Thêm một phương thức trong một giao diện đòi hỏi bạn phải theo dõi tất cả các lớp triển khai thực hiện giao diện cụ thể. Ngoài ra, bạn có thể mở rộng giao diện để cho phép nó có các phương thức bổ sung. Nếu bạn tình cờ xử lý một lớp trừu tượng, tất cả những gì được yêu cầu là thêm việc triển khai mặc định của phương thức và mã tiếp tục hoạt động. Vì sự khác biệt tồn tại giữa các lớp và giao diện trừu tượng, điều quan trọng cần lưu ý là chúng không phải là đối thủ, nhưng sự khác biệt được đề cập ở đây phục vụ cho nhau.  

Tóm lược

  1. Các trường lớp trừu tượng không phải là tĩnh hoặc cuối cùng trái ngược với giao diện có các bảng tĩnh và cuối cùng.

  2. Không có mã thực thi nào có thể được sử dụng trong các giao diện trong khi nó có thể được sử dụng trong lớp trừu tượng.

  3. Khả năng hiển thị giao diện chỉ có thể được công khai trong khi khả năng hiển thị của lớp trừu tượng có thể thay đổi.

  4. Một lớp trừu tượng sẽ tự động kế thừa lớp đối tượng, nhưng không thể có trong giao diện.

  5. Lớp trừu tượng nhanh hơn giao diện trong triển khai.