Sự khác biệt giữa lớp trừu tượng và giao diện trong Java
Sự khác biệt chính giữa Lớp trừu tượng và Giao diện trong Java
- Trong Giao diện, một lớp có thể triển khai nhiều giao diện, trong khi lớp đó chỉ có thể kế thừa một Lớp trừu tượng.
- Trong Giao diện không có công cụ sửa đổi quyền truy cập. Mọi thứ được xác định bên trong Giao diện được coi là có công cụ sửa đổi công khai, trong khi Lớp trừu tượng có thể có công cụ sửa đổi truy cập.
- Giao diện không thể chứa các trường dữ liệu, trong khi lớp trừu tượng có thể có các trường dữ liệu.
- Các giao diện giúp xác định các khả năng ngoại vi của một lớp, trong khi một lớp trừu tượng xác định danh tính của một lớp.
Lớp trừu tượng là gì?
Một lớp có từ khóa abstract trong khai báo của nó được gọi là lớp abstract. Các lớp abstract phải có không hoặc nhiều phương thức abstract. tức là các phương thức không có phần thân. Nó có thể có nhiều phương thức concrete. Các lớp abstract cho phép bạn tạo bản thiết kế cho các lớp concrete. Nhưng lớp kế thừa phải triển khai phương thức abstract. Các lớp abstract không thể được khởi tạo.
Lý do quan trọng để sử dụng giao diện
- Giao diện được sử dụng để đạt được sự trừu tượng.
- Được thiết kế để hỗ trợ độ phân giải phương thức động trong thời gian chạy
- Nó giúp bạn đạt được khớp nối lỏng lẻo.
- Cho phép bạn tách định nghĩa của một phương thức khỏi hệ thống phân cấp kế thừa
Những lý do quan trọng để sử dụng lớp trừu tượng
- Các lớp trừu tượng cung cấp chức năng mặc định cho các lớp con.
- Cung cấp mẫu cho các lớp cụ thể trong tương lai
- Giúp bạn xác định giao diện chung cho các lớp con của nó
- Lớp trừu tượng cho phép tái sử dụng mã.
Giao diện là gì?
Giao diện là một bản thiết kế có thể được sử dụng để triển khai một lớp. Giao diện không chứa bất kỳ phương thức cụ thể nào (phương thức có mã). Tất cả các phương thức của giao diện đều là phương thức trừu tượng. Giao diện không thể được khởi tạo. Tuy nhiên, các lớp triển khai giao diện có thể được khởi tạo. Giao diện không bao giờ chứa các biến thể hiện nhưng chúng có thể chứa các biến public static final (tức là các biến lớp hằng số)
Sự khác biệt giữa Giao diện và Lớp trừu tượng trong Java
Lớp trừu tượng cho phép bạn tạo chức năng mà các lớp con có thể triển khai hoặc ghi đè trong khi giao diện chỉ cho phép bạn nêu chức năng chứ không cho phép triển khai chức năng đó. Một lớp chỉ có thể mở rộng một lớp trừu tượng trong khi một lớp có thể triển khai nhiều giao diện.
Thông số | Giao thức | Lớp trừu tượng |
---|---|---|
Tốc độ | Chậm | NHANH CHÓNG |
Nhiều thừa kế | Triển khai một số giao diện | Chỉ có một lớp trừu tượng |
Structure | Phương pháp trừu tượng | Phương pháp trừu tượng và cụ thể |
Khi nào sử dụng | Nâng cao trong tương lai | Để tránh sự độc lập |
Kế thừa/Thực hiện | Một lớp có thể thực hiện nhiều giao diện | Lớp chỉ có thể kế thừa một Lớp trừu tượng |
Triển khai mặc định | Trong khi thêm nội dung mới vào giao diện, thật là một cơn ác mộng khi tìm thấy tất cả những người triển khai và triển khai những nội dung mới được xác định. | Trong trường hợp Lớp trừu tượng, bạn có thể tận dụng cách triển khai mặc định. |
Truy cập công cụ sửa đổi | Giao diện không có công cụ sửa đổi quyền truy cập. Mọi thứ được xác định bên trong giao diện đều được coi là công cụ sửa đổi công khai. | Lớp trừu tượng có thể có một công cụ sửa đổi truy cập. |
Khi nào sử dụng | Tốt hơn nên sử dụng giao diện khi các triển khai khác nhau chỉ chia sẻ chữ ký phương thức. Phân cấp đa hình của các loại giá trị. | Nó nên được sử dụng khi các triển khai khác nhau cùng loại có chung một hành vi. |
Các trường dữ liệu | giao diện không thể chứa các trường dữ liệu. | lớp có thể có các trường dữ liệu. |
Mặc định nhiều kế thừa | Một lớp có thể thực hiện nhiều giao diện. | Một lớp chỉ kế thừa một lớp trừu tượng. |
Thực hiện | Một giao diện là trừu tượng nên nó không thể cung cấp bất kỳ mã nào. | Một lớp trừu tượng có thể cung cấp mã mặc định, hoàn chỉnh cần được ghi đè. |
Sử dụng công cụ sửa đổi Access | Bạn không thể sử dụng công cụ sửa đổi truy cập cho phương thức, thuộc tính, v.v. | Bạn có thể sử dụng một lớp trừu tượng có chứa các công cụ sửa đổi quyền truy cập. |
Sử dụng | Các giao diện giúp xác định các khả năng ngoại vi của một lớp. | Một lớp trừu tượng xác định danh tính của một lớp. |
Các trường được xác định | Không có trường nào có thể được xác định | Một lớp trừu tượng cho phép bạn định nghĩa cả trường và hằng |
di sản | Một giao diện có thể kế thừa nhiều giao diện nhưng không thể kế thừa một lớp. | Một lớp trừu tượng có thể kế thừa một lớp và nhiều giao diện. |
Hàm tạo hoặc hàm hủy | Một giao diện không thể khai báo hàm tạo hoặc hàm hủy. | Một lớp trừu tượng có thể khai báo các hàm tạo và hàm hủy. |
Giới hạn tiện ích mở rộng | Nó có thể mở rộng bất kỳ số lượng giao diện. | Nó chỉ có thể mở rộng một lớp hoặc một lớp trừu tượng tại một thời điểm. |
Từ khóa trừu tượng | Trong từ khóa giao diện trừu tượng, là tùy chọn để khai báo một phương thức dưới dạng trừu tượng. | Trong một lớp trừu tượng, từ khóa trừu tượng là bắt buộc để khai báo một phương thức dưới dạng trừu tượng. |
Loại lớp | Một giao diện chỉ có thể có các phương thức trừu tượng công khai. | Một lớp trừu tượng có các phương thức trừu tượng được bảo vệ và công khai. |
Mã mẫu cho Giao diện và Lớp trừu tượng trong Java
Sau đây là mã mẫu để tạo giao diện và lớp trừu tượng trong Java
Cú pháp giao diện
interface name{ //methods }
Java Ví dụ về giao diện:
interface Pet { public void test(); } class Dog implements Pet { public void test() { System.out.println("Interface Method Implemented"); } public static void main(String args[]) { Pet p = new Dog(); p.test(); } }
Cú pháp lớp trừu tượng
abstract class name{ // code }
Ví dụ về lớp trừu tượng:
abstract class Shape { int b = 20; abstract public void calculateArea(); } public class Rectangle extends Shape { public static void main(String args[]) { Rectangle obj = new Rectangle(); obj.b = 200; obj.calculateArea(); } public void calculateArea() { System.out.println("Area is " + (b * b)); } }