So sánh abstract và interface trong java năm 2024
Sự khác nhau giữa Interface và Abstraction Class là gì? Cách phân biệt ra sao? Bài viết này sẽ giải đáp những vấn đề này để bạn có thể lựa chọn cách làm phù hợp nhất cho mỗi trường hợp trong lập trình.Nếu bạn đã tìm hiểu về lập trình Java, chắc hẳn bạn sẽ biết đến hai khái niệm Interface và Abstraction Class. Nhưng liệu bạn đã biết rõ về công dụng và lợi ích của Abstract và Interface ? Hay sự khác nhau giữa chúng và cách phân biệt ra sao? Show
1. Khái quát về Interface và Abstraction ClassInterface (hay giao diện) là một kiểu dữ liệu tham chiếu chỉ chứa hằng số và tên các phương thức, không có phần phương thức trừu tượng tương tự với class (lớp). Tuy nhiên, class thường thể hiện các thuộc tính và hành động của đối tượng, còn Interface thể hiện các hành động của lớp đó. Cũng giống với các lớp, interface không thể được khởi tạo mà chỉ có thể mở rộng hoặc kế thừa từ các Interface khác. Tính trừu tượng là một tiến trình làm ẩn các trình triển khai và chỉ hiển thị các tính năng quan trọng tới người dùng. Ví dụ: để gửi tin nhắn, người dùng chỉ cần soạn và gửi tin mà không hề biết tiến trình xử lý nội tại triển khai tin nhắn đó như thế nào. Nói cách khác, tính trừu tượng giúp bạn chú ý vào đối tượng thay vì quan tâm đến cách nó thực hiện. Abstraction Class (AC) được hiểu là một lớp trừu tượng trong Java. AC trong trong Java có thể có các phương thức trừu tượng và không trừu tượng (phương thức với phần thân). Đặc biệt, nó không thể được khởi tạo mà cần kế thừa và tự triển khai phương thức. Abstraction Class trong Java\>>> Xem thêm: 10 Lý do hàng đầu để học JavaScript làm ngôn ngữ lập trình nền tảng 2. Phân biệt Interface và lớp trừu tượng (Abstraction Class)Cả Interface và Abstraction class đều giống nhau ở điểm có thể chứa phương thức thuần ảo và không thể khởi tạo đối tượng. Tuy nhiên, điểm khác biệt cơ bản của Interface và Abstraction Class như sau: Abstract class Interface Có các phương thức trừu tượng và không trừu tượng Chỉ có duy nhất phương thức trừu tượng Không hỗ trợ đa kế thừa Hỗ trợ đa kế thừa Có thể tồn tại các biến final và non-final, static và non-static Chỉ có các biến static và final Có thể extents (kế thừa) interface Không thể kế thừa lớp abstract Sử dụng từ khóa “abstract” để khai báo lớp trừu tượng Sử dụng từ khóa “interface” để khai báo giao diện Một lớp trừu tượng có thể extents một lớp Java khác và thực hiện nhiều interface khác nhau Một interface chỉ có thể implements (cài đặt) nhiều interface khác Có thể kế thừa bằng cách sử dụng từ khóa “extends” Các lớp triển khai interface bằng cách sử dụng từ khóa “implements” Một lớp trừu tượng có phạm vi truy cập ở dạng private, protected,… Các phương thức, property của interface đều được mặc định ở dạng public Có thể định nghĩa thân phương thức và property. Chỉ có thể khai báo, không thể định nghĩa code xử lý. 3. Khi nào bạn nên dùng Interface và Abstraction Class?Interface giúp bạn cụ thể hóa hành vi của một loại dữ liệu cụ thể, còn Abstraction Class giúp bạn chia sẻ code giữa các lớp có liên quanBạn nên sử dụng Interface trong các trường hợp như:
Đối với Abstraction Class, bạn có thể cân nhắc sử dụng trong những trường hợp:
Bài viết trên đã giải đáp các vấn đề về Interface và Abstraction Class cũng những điểm khác biệt giữa hai phương thức này. FUNiX hy vọng qua bài viết này, bạn đọc sẽ có một cái nhìn rõ hơn về Interface, Abstract Class. Nếu bạn có bất kỳ đóng góp gì, đừng quên để lại bình luận ở dưới đây. Khi nào sử dụng abstract class và interface Java?Khi nào thì sử dụng interface, khi nào sử dụng abstract class. Khi một nhóm đối tượng có cùng bản chất kế thừa từ một class thì sử dụng abstract class. Khi một nhóm đối tượng không có cùng bản chất nhưng chúng có hành động giống nhau thì sử dụng interface. Trong C# abstract class và interface có điểm chung là gì?Để so sánh giữa Abstract class và Interface chúng ta cần bàn đến 2 điểm là giống nhau và khác nhau giữa chúng. Giống nhau: Abstract class và interface đều không thể khởi tạo đối tượng bên trong được. Abstract class và interface đều có thể khai báo các phương thức nhưng không thực hiện chúng. Interface khác class như thế nào?Một Class như là một cái bản đồ chi tiết về các thuộc tính và phương thức của đối tượng. Còn Interface lại giống như mô tả tổng quan về đối tượng, bao gồm nhóm các thuộc tính và phương thức, nhưng không cung cấp việc triển khai cũng như khởi tạo cho nó. Interface trong code là gì?Interface (hay giao diện) là một kiểu dữ liệu tham chiếu chỉ chứa hằng số và tên các phương thức, không có phần phương thức trừu tượng tương tự với class (lớp). Tuy nhiên, class thường thể hiện các thuộc tính và hành động của đối tượng, còn Interface thể hiện các hành động của lớp đó. |