Sự Khác Nhau Giữa Abstract Class Với Interface Trong Java
Có thể bạn quan tâm
Sự khác nhau giữa Abstract class với Interface trong Java
Abstract Class – InterfaceBạn vẫn nghe trong Java không hỗ trợ đa thừa kế (nhằm tránh sự phức tạp, xung đột code)
và để nhằm khắc phục vấn đề đó ta dùng interface (Cho phép nhiều class implements nhiều interface).
Vậy sự khác nhau giữa abstract class với interface là gì, cách dùng chúng trong mỗi trường hợp ra sao?
1. Ý nghĩa của abstract class và interface
- abstract class:
Bạn nên nhớ Java là ngôn ngữ hướng đối tượng, dùng abstract class nó mang ý nghĩa là thừa kế bản chất của đối tượng. Ví dụ Student extends Personhoàn toàn hợp lý vì học sinh và người đều cùng bản chất, nhưng Student extends Car lại không hợp lý, vì học sinh và ô tô khác hoàn toàn nhau về bản chất. 
- interface:
Khi nói tới interface người ta thường dùng cho hành động nhiều hơn
Với abstract class thì người ta sẽ gộp chung các thuộc tính lại, còn với interface thì người ta sẽ gộp chung các hành động lại.
Ví dụ Student implements Run học sinh có thể thực hiện hành động chạy, Student implements Eat học sinh có thể thực hiện hành động ăn –> Student implements Run, Eat học sinh có thể thực hiện cả 2 hành động là chạy và ăn –> hoàn toàn hợp lý
Túm lại:
- Abstract class thiên về bản chất của đối tượng (các thuộc tính)
- Interface thiên về các hành động của đối tượng (các method).
2. Sự khác nhau trong cài đặt abstract class và interface
Từ ý nghĩa mà abstract class với interface cũng có những khác nhau trong cài đặt:
| Abstract class | Interface |
| 1 abstract class chỉ có thể extends 1 và chỉ một class /abstract class khác | 1 interface có thể extends nhiều interface khác; interface chỉ có thể extends interface không thể extends class |
| Trong abstract class có thể có concrete method hoặc abstract method | Trong interface, mọi method đều là abstract method (*Từ Java 8 cho phép thêm method không phải là abstract vào interface bằng từ khóa default) |
| Trong abstract class khi muốn tạo abstract method bắt buộc phải có từ khóa abstract | Từ khóa abstract có thể có hoặc không. |
| abstract method trong abstract class có thể là public hoặc protected | abstract method trong abstract class chỉ có thể là public (*Từ Java 9 cho phép thêm method private và private static vào Interface) |
| Trong abstract class, các thuộc tính có thể final, static, public, private, protected | Trong Interface, mọi thuộc tính đều là public static final |
Sự khác nhau giữa Abstract class với Interface trong Java.
References:
https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
Từ khóa » Khác Nhau Giữa Abstract Class Và Interface Trong Java
-
Sự Khác Nhau Giữa Abstract Class Và Interface - Học Java Miễn Phí ...
-
Sự Khác Nhau Giữa Interface Với Abstract Và Cách Sử Dụng Chúng ...
-
Khác Biệt Giữa Abstract Class Và Interface Trong Java - Viblo
-
Phân Biệt Abstract Và Interface Trong Học Lập Trình Java - Le Vu Nguyen
-
Abstract Class Và Interface Trong Java - GP Coder (Lập Trình Java)
-
Sự Khác Biệt Giữa Abstract Class Và Interface | JAVA DEV
-
So Sánh Abstract Class Và Interface - Học Lập Trình Cùng CodeGym
-
So Sánh Abstract Class Và Interface Trong Java. Ví Dụ Minh Họa.
-
Phân Biệt Lớp Abstract Và Interface Trong Java - Hoclaptrinh
-
Sự Khác Nhau Giữa Abstract Class Và Interface - Học Java - CodeGym
-
Phân Biệt Lớp Abstract Và Interface Trong Java
-
Abstract Class Và Interface Trong Java - Openplanning
-
Sự Khác Nhau Giữa Abstract Class Và Interface Trong Java - Deft Blog
-
Abstract Class Là Gì? Phân Biệt Abstract Class Và Interface - 123Job