Abstract class và interface đều được sử dụng để có được sự trừu tượng mà ở đó chúng ta có thể khai báo các phương thức trừu tượng. Nhưng có một vài sự khác nhau giữa abstract class và interface được liệt kê trong bảng sau:
Abstract class |
Interface |
---|---|
1) Abstract class có phương thức abstract (không có thân hàm) và phương thức non-abstract (có thân hàm). |
Interface chỉ có phương thức abstract. Từ java 8, nó có thêm các phương thức default và static. |
2) Abstract class không hỗ trợ đa kế thừa. |
Interface có hỗ trợ đa kế thừa |
3) Abstract class có các biến final, non-final, static and non-static. |
Interface chỉ có các biến static và final. |
4) Abstract class có thể cung cấp nội dung cài đặt cho phương thức của interface. |
Interface không thể cung cấp nội dung cài đặt cho phương thức của abstract class. |
5) Từ khóa abstract được sử dụng để khai báo abstract class. |
Từ khóa interface được sử dụng để khai báo interface. |
6) Ví dụ: public abstract class Shape { public abstract void draw(); } |
Ví dụ: |
Đơn giản để hiểu, đó là abstract class có được trừu tượng 1 phần (0 tới 100%), còn interface có được trừu tường toàn phần (100%).
Ví dụ sau là sự kết hợp giữa abstract class và interface.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
Output:
I am a I am b I am C I am d
Nguồn tin: viettuts