Lớp giao diện là một tập các phương thức public được đưa ra để người dùng có thể tương tác với đối tượng. Lớp giao diện bao gồm các hằng số và các phương thức trừu tượng. Phương thức trừu tượng là phương thức chỉ có khai báo mà không có triển khai. Lớp giao diện được dùng khi thiết kế một lớp có các phương thức chung. Các lớp triển khai lớp giao diện này bắt buộc phải tuân thủ các phương thức chung đó. Ví dụ: Lớp giao diện Độngvật có phương thức kêu() có nghĩa là tất cả các lớp động vật đều phải kêu nhưng có thể kêu với các cách implement khác nhau. Lớp người là nói, lớp chó là sủa, lớp hổ là gầm,…
Khai báo lớp giao diện :
interface MyInterface { public void method1();
public void method2(); }
Lớp triển khai :
class Demo implements MyInterface {
public void method1() {
System.out.println("implementation of method1");
}
public void method2() {
System.out.println("implementation of method2");
}
public static void main(String arg[]) {
MyInterface obj = new Demo(); obj.method1();
}
63
Hình 3. 10 Ví dụ về mô tả lớp giao diện bằng UML
Lớp giao diện có một số đặc điểm sau :
- Lớp giao diện chỉ cho một lớp giao diện khác kế thừa.
- Lớp giao diện chỉ chứa các phương thức trừu tượng mà không có các phương thức cụ thể.
- Các phương thức trừu tượng trong lớp giao diện chỉ có thể là public. - Lớp giao diện chỉ chứa các biến loại public static final.
Vấn đề đa kế thừa : Ta có lớp b và lớp c cùng được kế thừa từ lớp a. Java không cho phép một lớp kế thừa từ hai lớp đồng thời. Cụ thể, lớp d không thể kế thừa đồng thời lớp b và lớp c. Lý do là nếu d muốn sử dụng dữ liệu hay phương thức của lớp a thì Java không biết dữ liệu đó được kế thừa theo hướng từ b xuống đến d hay từ c xuống đến d. Để tránh tình trạng kế thừa đồng thời nhiều lớp, đồng thời vẫn đảm bảo việc sử dụng hiệu quả của tính kế thừa, Java cung cấp khái niệm lớp giao diện (Interface). Cụ thể, trong trường hợp này, một trong hai lớp b hoặc c phải là lớp giao diện. Giả sử lớp c là lớp giao diện thì khi đó lớp d vẫn được kế thừa từ a và b, đồng thời vẫn có những phương thức của lớp c bằng cách cài đè các phương thức của lớp c.
Ví dụ về sử dụng đa hình thông qua lớp giao diện : Trong ví dụ về mô phỏng động vật ở trên, ta đã biết về vai trò của đa hình thông qua việc truyền tham số Animal cho phương thức AnimalFeed(). Giả sử, bài toán phát sinh thêm tình huống là có 2 động vật
<<interface>> Complexity + getComplexity() : int + setComplexity(int) : void Question + getQuestion(): String + getAnswer(): String MiniQuiz
+ main(args: String[]): void
1
64 Dog và Cat có thêm phương thức là playing(). Khi đó ta có thể nhóm 2 lớp này vào một nhóm bằng cách tạo thêm lớp giao diện Pet và cho 2 lớp này kế thừa lớp Pet.
Khai báo lớp giao diện Pet :
Định nghĩa lớp feedingAnimal :
65
BÀI TẬP CHƯƠNG 3
Bài 1 : Viết chương trình quản lý lương nhân viên công ty theo biểu đồ lớp sau :
Bài 2: Viết chương trình tính diện tích và chu vi hình chữ nhật. Lớp Shape là lớp trừu
66
BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
TS. VŨ HỮU TIẾN ThS. ĐỖ THỊ LIÊN BÀI GIẢNG NGÔN NGỮ LẬP TRÌNH JAVA Mã học phần: INT13108 (03 tín chỉ) Hà Nội, 11/2019
67
CHƯƠNG 4. XỬ LÝ NHẬP/XUẤT TRONG