Interfaces trong Java - Các thông tin cơ bản cho người mới
20/12/2022 01:34
Giao diện là các mẫu lớp. Mặc dù không bắt buộc nghiêm ngặt, nhưng chúng là một phần của cấu trúc tổ chức của lập trình hướng đối tượng. Các giao diện định nghĩa các phương thức cho các lớp bằng cách chỉ định tên phương thức, kiểu trả về (hoặc void) và các đối số của phương thức (theo kiểu và tên).
Giao diện là các mẫu lớp. Mặc dù không bắt buộc nghiêm ngặt, nhưng chúng là một phần của cấu trúc tổ chức của lập trình hướng đối tượng. Các giao diện định nghĩa các phương thức cho các lớp bằng cách chỉ định tên phương thức, kiểu trả về (hoặc void) và các đối số của phương thức (theo kiểu và tên). Các định nghĩa phương thức này được gọi là chữ ký. Bởi vì đây là một mẫu, chữ ký phương thức không chứa mã. Mã được nhập vào việc thực hiện một giao diện. Các giao diện được sử dụng trong lĩnh vực đa hình.
Lưu ý hai điểm quan trọng về giao diện:
- Nếu một lớp triển khai một
interface
, tất cả các phương thức của giao diện phải xuất hiện trong lớp. - Từ
implements
khóa được sử dụng khi tạo một lớp được mô hình hóa sau một giao diện.
An analogy
Hãy nghĩ đến việc cắt một miếng mồi nhử vịt từ một khối gỗ. Đầu tiên, một mẫu được sử dụng để theo dõi mẫu trên gỗ. Sau đó, khi gỗ được cắt ra, nó sẽ giống như mẫu. Tuy nhiên, tại thời điểm này, cả mẫu và gỗ đều không có bất kỳ chi tiết đẹp nào mà người ta mong đợi từ một mồi nhử đã hoàn thành. Mẫu được sử dụng để xác định các đặc điểm cơ bản, không phải chi tiết chính xác. Sau khi cắt nhiều miếng hình con vịt, mỗi miếng có thể được chạm khắc và trang trí độc đáo. Tuy nhiên, tất cả chúng đều có cùng kích thước và hình dạng cơ bản.
Một giao diện thường được sử dụng làm mẫu cho nhiều lớp. Tất cả các lớp này đều chia sẻ các phương thức được định nghĩa trong giao diện. Tuy nhiên, việc thực hiện các phương pháp có thể thay đổi từ lớp này sang lớp khác.
Một ví dụ về giao diện
Một giao diện có tên Động vật có thể có các định nghĩa phương thức cho thức ăn, chú rể và thú cưng. Việc cho ăn, chải chuốt và cưng nựng động vật có thể khác với bản thân động vật.
interface Animal {
boolean feed(boolean timeToEat);
void groom();
void pet();
}
Ví dụ, một lớp chó có thể được triển khai theo một cách có thể đoán trước được.
class Dog implements Animal {
boolean feed(boolean timeToEat) {
// pour food into bowl
return true;
}
void groom() {
// brush well
}
void pet() {
// pet cautiously
}
}
Các lớp động vật khác, có thể có nhu cầu cụ thể.
class Giraffe implements Animal {
boolean feed(boolean timeToEat) {
// point to the trees
return true;
}
void groom() {
// get a ladder
// brush well
}
void pet() {
// get a ladder
// pet cautiously
}
}
class Tiger implements Animal {
boolean feed(boolean timeToEat) {
// toss raw meat into cage
return true
}
void groom() {
// tranquilize
// brush well
}
void pet() {
// DO NOT PET
}
}