Sự khác nhau giữa abstract class và interface trong java

Ở những bài trước, chúng ta đã biết đến tính trừu tượng, và đi song song đó là abstract class và interface để triển khai tính trừu tượng trong java.

Chúng ta cùng xem thử nó sẽ khác nhau ở điểm nào qua bảng liệt kê sau

STT Abstract class Interface
1 Abstract class chỉ có thể thừa kế một class hoặc một abstract class khác. Interface có thể thừa kế một hoặc nhiều interface khác.
2 Abstract class có thể chứa abstract method và method thông thường(method có thân hàm). Interface chỉ có abstract method.
3 Abstract class có thể chứa protected hoặc public abstract method. Interface chỉ có public abstract method.
4 Abstract class có thể chứa static, final hoặc static final biến. Interface chỉ có public static final biến.

Abstract class chỉ có thể thừa kế một class hoặc một abstract class khác

Output: method ex3

Interface có thể thừa kế một hoặc nhiều interface khác

Output:

method ex1

method ex2

Abstract class có thể chứa abstract method và method thông thường(method có thân hàm)

Output:

method ex1

method ex2

Interface chỉ có abstract method

Output: display

Abstract class có thể chứa protected hoặc public abstract method

Output:

method ex1

method ex2

method ex3

Interface chỉ có public abstract method

Output:

method ex1

method ex2

Abstract class có thể chứa static, final hoặc static final biến

Output: 

1

2

3

Interface chỉ có public static final biến

Output: 10

Note:

Interface thường được dùng để mô tả một tập các chức năng. Một class thừa kế một interface A, ta nói rằng class đó có thể thực hiện các năng của interface A khai báo, mà chưa cần xem code.

Ví dụ: Chúng ta có Mail là một interface và MailImpl implements Mail

Chúng ta sẽ hiểu rằng class MailImpl sẽ có thể thực hiện được các chứng năng mà Mail khai báo.

Abstract class thường được dùng trong mối quan hệ thừa kế, vì tính linh hoạt của nó có thể chứa abstract method và method thông thường. Dựa vào đó mà chúng ta có thể định nghĩa các khuôn mẫu hay triển khai những thuộc tính, method mà các class con có thể dùng chung.

Các bài viết liên quan

Leave a Comment

Your email address will not be published. Required fields are marked *