So sánh Abstract class và Interface trong Java. Ví dụ minh họa.

Đăng bởi: Admin | Lượt xem: 5057 | Chuyên mục: Java

Trong bài viết này, chúng ta sẽ so sánh Abstract Class với Interface trong Java và các ví dụ minh họa


1. Tìm hiểu về Abstract Class:

Bấm vào đây để tìm hiểu về Abstract Class

2. Tìm hiểu Interface

Bấm vào đây để tìm hiểu Interface

3. So sánh Abstract Class vs Interface

Lớp trừu tượng (abstract class) Interface
Thể hiện tính trừu tượng < 100% Thể hiện tính trừu tượng 100% (Java < 8).
Lớp trừu tượng có thể có các phương thức abstract và non-abstract Phiên bản Java < 8, Interface chỉ có thể có phương thức abstract.
Phiên bản Java 8, có thể thêm default  static methods.
Phiên bản Java 9, có thể thêm private methods.
Lớp trừu tượng không hỗ trợ đa kế thừa Interface hỗ trợ đa kế thừa
Lớp trừu tượng có thể có các biến final, non-final, static và non-static Interface chỉ có các biến static final
Lớp trừu tượng có thể có phương thức static, phương thức main và constructor Interface không thể có phương thức static, main hoặc constructor
Từ khóa abstract được sử dụng để khai báo lớp trừu tượng Từ khóa interface được sử dụng để khai báo Interface
Lớp trừu tượng có thể cung cấp trình triển khai của Interface Interface không cung cấp trình triển khai cụ thể của lớp abstract

Sử dụng Abstract class khi chúng ta chỉ có thể hoàn thành một vài chức năng (method/ function) chuẩn của hệ thống, một vài chức năng còn lại các lớp extends phải hoàn thành. Những tính năng đã hoàn thành này vẫn sử dụng như bình thường, đây là những tính năng chung.

Sử dụng Interface khi bạn muốn tạo dựng một bộ khung chuẩn gồm các chức năng (method/ function) mà tất cả module/ project cần phải có. Các module phải implements tất cả chức năng đã được định nghĩa.
Ví dụ:
public abstract class Shape {
public abstract void draw();
}
Ví dụ:
public interface Drawable {
void draw();
}

Nói về Abtract Class và Interface, đôi khi bạn sẽ gặp một số cách gọi: Khi một class extend một class/ abtract class thì có nghĩa là ta đang thể hiện mối quan hệ is-a (là), còn khi implement một interface, thì ta đang thể hiện mối quan hệ has-a (có, hay thực hiện).

Ví dụ:

// Programmer là Person, thực hiện việc Programming, Debugging
 
class Programmer extends Person implements Programming, Debugging {}
 
// Rectangle là Shape, có Width, Height
 
class Rectangle extends Shape implements Width, Height {}
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Java

Tổng hợp Bài tập Java có lời giải
Số bài học:
Lượt xem: 18002
Đăng bởi: Admin
Chuyên mục: Java

Lập trình Java cơ bản
Số bài học:
Lượt xem: 40693
Đăng bởi: Admin
Chuyên mục: Java