Cả lớp trừu tượng và giao diện cả hai chủ yếu được sử dụng để trừu tượng hóa, tuy nhiên chúng rất khác nhau. Cả hai đều là phần cốt lõi của Java nhưng có cách sử dụng ứng dụng riêng. Mặc dù cả hai thuật ngữ có thể đồng nghĩa với nhau, chúng không thể được sử dụng thay thế cho nhau.
Có sự khác biệt đáng kể giữa hai. Mặc dù một phương thức giao diện là trừu tượng theo mặc định, một tóm tắt có thể chứa cả các phương thức trừu tượng và không trừu tượng. Chà, kể từ Java 8, các giao diện cũng có các triển khai phương thức và chúng có thể có cả các phương thức tĩnh và phương thức mặc định trong Java. Hãy nghiên cứu sự khác biệt giữa hai chi tiết.
Một lớp trừu tượng trong Java là một lớp được khai báo là trừu tượng - nó có thể có hoặc không chứa các phương thức trừu tượng. Nó khá giống với giao diện Java ngoại trừ thực tế là nó có thể chứa triển khai phương thức mặc định. Giống như trong lập trình hướng đối tượng, sự trừu tượng hóa trong Java đạt được bằng cách sử dụng các lớp và giao diện trừu tượng. Trong Java, sự trừu tượng có nghĩa là ẩn các chi tiết không liên quan khỏi người dùng để chỉ tập trung vào các chi tiết cần thiết để tăng hiệu quả do đó làm giảm độ phức tạp. Từ khóa Tóm tắt trừu tượng được sử dụng để tạo một lớp trừu tượng ngay trước từ khóa lớp trong khai báo lớp.
Một lớp trừu tượng có thể có hoặc không chứa các phương thức trừu tượng (các phương thức không có phần thân), nhưng nếu một lớp có ít nhất một phương thức trừu tượng, thì nó phải được khai báo là trừu tượng. Tuy nhiên, các phương thức không trừu tượng cũng chỉ có thể được sử dụng trong một lớp trừu tượng, mà chỉ để thực hiện hành vi mặc định. Các phương thức trong một lớp trừu tượng có thể có các sửa đổi truy cập như riêng tư, công khai, tĩnh và được bảo vệ, tùy thuộc vào mức độ hiển thị. Một lớp trừu tượng không thể được khởi tạo và nó không cung cấp trừu tượng 100 phần trăm vì thực tế là nó có thể có phương thức cụ thể.
Một giao diện mặc dù trông giống như một lớp, nhưng nó không phải là. Vì Java không hỗ trợ nhiều kế thừa, đôi khi một giao diện là lý tưởng để cung cấp cơ sở cho hệ thống phân cấp lớp. Một giao diện giống như một bản thiết kế của một lớp cũng được sử dụng để đạt được sự trừu tượng hóa trong Java. Nó chứa các phương thức trừu tượng và hằng số tĩnh. Nói một cách đơn giản, một giao diện là một tập hợp các phương thức trừu tượng được sử dụng để chỉ định một hành vi mà lớp phải thực hiện. Không giống như lớp trừu tượng, một giao diện cung cấp sự trừu tượng hóa hoàn toàn trong Java. Nó có thể có cả phương thức và biến giống như một lớp, tuy nhiên các phương thức được khai báo trong giao diện là trừu tượng theo mặc định.
Lớp trừu tượng | Giao diện |
Từ khóa trừu tượng được sử dụng để tạo một lớp trừu tượng và nó có thể được sử dụng với các phương thức. | Từ khóa giao diện được sử dụng để tạo giao diện nhưng không thể sử dụng nó với các phương thức. |
Một lớp chỉ có thể mở rộng một lớp trừu tượng. | Một lớp có thể thực hiện nhiều giao diện. |
Một lớp trừu tượng có thể có cả phương thức trừu tượng và không trừu tượng. | Một giao diện chỉ có thể có các phương thức trừu tượng. |
Các biến không phải là cuối cùng theo mặc định. Nó có thể chứa các biến không phải là cuối cùng. | Các biến được mặc định là cuối cùng trong một giao diện. |
Một lớp trừu tượng có thể cung cấp việc thực hiện một giao diện. | Một giao diện không thể cung cấp việc thực hiện một lớp trừu tượng. |
Nó có thể có các phương thức với việc triển khai. | Nó cung cấp sự trừu tượng tuyệt đối và không thể thực hiện phương thức. |
Nó có thể có các sửa đổi truy cập công cộng, riêng tư, tĩnh và được bảo vệ. | Các phương thức này hoàn toàn công khai và trừu tượng trong giao diện Java. |
Nó không hỗ trợ nhiều kế thừa. | Nó hỗ trợ nhiều kế thừa. |
Đó là lý tưởng cho việc tái sử dụng mã và quan điểm tiến hóa. | Đó là lý tưởng cho khai báo Loại. |
Cả lớp trừu tượng và giao diện đều được sử dụng để trừu tượng hóa; tuy nhiên, họ có sự chia sẻ công bằng về sự khác biệt. Sự khác biệt chính giữa hai được thúc đẩy bởi các phương pháp trừu tượng. Trong khi cái trước có thể có hoặc không có các phương thức trừu tượng, thì cái sau lại hoàn toàn trừu tượng. Một lớp trừu tượng có thể có cả phương thức trừu tượng và không trừu tượng. Mặt khác, một giao diện chỉ có thể có các phương thức trừu tượng, do đó chúng không thể thực hiện được, điều đó đơn giản có nghĩa là một giao diện không thể có các phương thức không trừu tượng. Một lớp trừu tượng không thể được khởi tạo mà cấm tạo ra một đối tượng. Mặt khác, một giao diện có thể trông giống như một lớp, nhưng nó không phải là.