Trong ngôn ngữ lập trình Java, giao diện (Interface) là một kiểu trừu tượng định nghĩa tập hợp các phương thức trừu tượng và hằng số (có thể không chứa phương thức hay hằng số nào). Giao diện đóng vai trò như một cam kết, quy định hành vi mà một lớp đối tượng nhất định phải có.
Dưới đây là những điểm quan trọng liên quan đến giao diện trong Java:
- Khởi tạo giao diện:
Sử dụng từ khóa interface để khai báo một giao diện.
interface GiaoDienCuaToi {
// Khai báo phương thức trừu tượng
void phuongThucCuaToi();
// Khai báo hằng số (mặc định là public static final)
int HANG_SO = 10;
}
- Triển khai giao diện:
Lớp có thể thực hiện một hoặc nhiều giao diện bằng cách sử dụng từ khóa implements.
class LopCuaToi implements GiaoDienCuaToi {
@Override
public void phuongThucCuaToi() {
System.out.println("Triển khai phuongThucCuaToi");
}
}
- So sánh giữa giao diện và lớp trừu tượng:
- Các phương thức trong giao diện mặc định là trừu tượng và không chứa phần thân; còn lớp trừu tượng có thể chứa cả phương thức trừu tượng và phương thức cụ thể.
- Một lớp chỉ có thể kế thừa từ một lớp cơ sở nhưng có thể thực hiện nhiều giao diện.
- Các trường trong giao diện mặc định là kiểu
public static final, tức là hằng số; trong khi đó lớp trừu tượng có thể chứa các trường với nhiều kiểu dữ liệu khác nhau.
- Kế thừa đa giao diện:
Một giao diện có thể kế thừa nhiều giao diện khác.
interface GiaoDienA {
void phuongThucA();
}
interface GiaoDienB {
void phuongThucB();
}
interface GiaoDienC extends GiaoDienA, GiaoDienB {
void phuongThucC();
}
- Phương thức mặc định:
Java 8 giới thiệu phương thức mặc định trong giao diện, cho phép cung cấp triển khai mặc định cho phương thức.
interface GiaoDienCuaToi {
void phuongThucCuaToi();
default void phuongThucMacDinh() {
System.out.println("Triển khai phương thức mặc định");
}
}
- Phương thức tĩnh:
Java 8 cũng hỗ trợ phương thức tĩnh trong giao diện.
interface GiaoDienCuaToi {
void phuongThucCuaToi();
static void phuongThucTinh() {
System.out.println("Phương thức tĩnh trong giao diện");
}
}
- Ứng dụng thực tế của giao diện:
- Giao diện được dùng để đạt được tính đa hình, cho phép các lớp khác nhau có cùng giao diện nhưng cách triển khai khác nhau.
- Giao diện mô tả các phương thức và hằng số mà lớp nên có, là một thỏa thuận thiết kế.
- Thư viện tiêu chuẩn của Java sử dụng rộng rãi giao diện, ví dụ như giao diện
java.util.List.
Giao diện đóng vai trò quan trọng trong Java, giúp tổ chức và chuẩn hóa cấu trúc mã nguồn, đồng thời hỗ trợ tính linh hoạt trong đa hình.