Thứ Sáu, 31 tháng 8, 2018

Java - Giao diện

Giao diện là một kiểu tham chiếu trong Lập trình Java. Nó tương tự như lớp học. Nó là một tập hợp các phương thức trừu tượng. Một lớp thực hiện một giao diện, do đó kế thừa các phương thức trừu tượng của giao diện.
học java
Học lập trình java 
Cùng với các phương thức trừu tượng, một giao diện cũng có thể chứa các hằng số, các phương thức mặc định, các phương thức tĩnh và các kiểu lồng nhau. Các thể thức phương thức chỉ tồn tại cho các phương thức mặc định và các phương thức tĩnh.

Viết một giao diện tương tự như viết một lớp. Nhưng một lớp mô tả các thuộc tính và hành vi của một đối tượng. Và một giao diện chứa các hành vi mà một lớp thực hiện.

Trừ khi lớp thực hiện giao diện là trừu tượng, tất cả các phương thức của giao diện cần phải được định nghĩa trong lớp.

Một giao diện tương tự như một lớp theo các cách sau:

Một giao diện có thể chứa bất kỳ số phương thức nào.

Giao diện được viết trong một tệp có phần mở rộng .java , với tên của giao diện khớp với tên của tệp.

Mã byte của giao diện xuất hiện trong tệp .class .

Giao diện xuất hiện trong các gói và tệp bytecode tương ứng của chúng phải nằm trong cấu trúc thư mục khớp với tên gói.

Tuy nhiên, một giao diện khác với một lớp theo nhiều cách, bao gồm -

Bạn không thể khởi tạo một giao diện.

Giao diện không chứa bất kỳ hàm tạo nào.

Tất cả các phương thức trong một giao diện đều trừu tượng.

Một giao diện không thể chứa các trường mẫu. Các trường duy nhất có thể xuất hiện trong giao diện phải được khai báo cả tĩnh và cuối.

Một giao diện không được mở rộng bởi một lớp; nó được thực hiện bởi một lớp.

Một giao diện có thể mở rộng nhiều giao diện.

Khai báo giao diện

Các giao diện từ khóa được sử dụng để khai báo một giao diện. Đây là một ví dụ đơn giản để khai báo một giao diện

Thí dụ

Sau đây là ví dụ về giao diện
/* File name : NameOfInterface.java */
import java.lang.*;
// Any number of import statements

public interface NameOfInterface {
   // Any number of final, static fields
   // Any number of abstract method declarations\
}

Giao diện có các thuộc tính sau

Giao diện hoàn toàn trừu tượng. Bạn không cần phải sử dụng từ khóa trừu tượng trong khi khai báo một giao diện.

Mỗi phương thức trong một giao diện cũng hoàn toàn trừu tượng, do đó từ khóa trừu tượng là không cần thiết.

Các phương thức trong giao diện ngầm được công khai.

Thí dụ
/* File name : Animal.java */
interface Animal {
   public void eat();
   public void travel();
}

Triển khai giao diện

Khi một lớp thực hiện một giao diện, bạn có thể nghĩ rằng lớp đó là ký hợp đồng, đồng ý thực hiện các hành vi cụ thể của giao diện. Nếu một lớp không thực hiện tất cả các hành vi của giao diện, lớp đó phải tự khai báo là trừu tượng.

Một lớp học sử dụng các dụng cụ từ khóa để thực hiện một giao diện. Từ khóa thực hiện xuất hiện trong khai báo lớp sau phần mở rộng của khai báo.

Thí dụ
/* File name : MammalInt.java */
public class MammalInt implements Animal {

   public void eat() {
      System.out.println("Mammal eats");
   }

   public void travel() {
      System.out.println("Mammal travels");
   } 

   public int noOfLegs() {
      return 0;
   }

   public static void main(String args[]) {
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
} 
Điều này sẽ tạo ra kết quả sau

Đầu ra

Mammal eats
Mammal travels

Khi các phương thức ghi đè được định nghĩa trong các giao diện, có một số quy tắc cần tuân theo -

Các ngoại lệ được kiểm tra không nên được khai báo trên các phương thức thực hiện khác với các phương thức được khai báo bởi phương thức giao diện hoặc các lớp con của các phương thức được khai báo bởi phương thức giao diện.

Chữ ký của phương thức giao diện và cùng kiểu trả về hoặc kiểu con phụ nên được duy trì khi ghi đè các phương thức.

Một lớp thực hiện có thể là trừu tượng và nếu vậy, các phương thức giao diện không cần phải được thực hiện.

Khi triển khai giao diện, có một số quy tắc

Một lớp có thể triển khai nhiều hơn một giao diện tại một thời điểm.

Một lớp chỉ có thể mở rộng một lớp, nhưng thực hiện nhiều giao diện.

Một giao diện có thể mở rộng một giao diện khác, theo cách tương tự như một lớp có thể mở rộng một lớp khác.

Mở rộng giao diện

Một giao diện có thể mở rộng một giao diện khác theo cùng một cách mà một lớp có thể mở rộng một lớp khác. Các mở rộng từ khóa được sử dụng để mở rộng giao diện, và giao diện con được thừa hưởng các phương pháp của giao diện cha mẹ.

Giao diện Thể thao sau đây được mở rộng bằng các giao diện Khúc côn cầu và Bóng đá.

Thí dụ
// Filename: Sports.java
public interface Sports {
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}

// Filename: Football.java
public interface Football extends Sports {
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}

// Filename: Hockey.java
public interface Hockey extends Sports {
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}
Giao diện Hockey có bốn phương pháp, nhưng nó kế thừa hai từ Thể thao; do đó, một lớp thực hiện Hockey cần phải thực hiện tất cả sáu phương pháp. Tương tự như vậy, một lớp thực hiện bóng đá cần xác định ba phương pháp từ Bóng đá và hai phương pháp từ Thể thao.

Mở rộng nhiều giao diện

Một lớp Java chỉ có thể mở rộng một lớp cha. Không cho phép nhiều thừa kế. Giao diện không phải là các lớp, tuy nhiên, và một giao diện có thể mở rộng nhiều hơn một giao diện cha.

Từ khoá mở rộng được sử dụng một lần và các giao diện cha được khai báo trong danh sách được phân cách bằng dấu phẩy.

Ví dụ: nếu giao diện Khúc côn cầu mở rộng cả Thể thao và Sự kiện, nó sẽ được khai báo là -

Thí dụ
public interface Hockey extends Sports, Event

Gắn thẻ giao diện

Việc sử dụng phổ biến nhất của các giao diện mở rộng xảy ra khi giao diện cha mẹ không chứa bất kỳ phương thức nào. Ví dụ, giao diện MouseListener trong gói java.awt.event mở rộng java.util.EventListener, được định nghĩa là

Thí dụ
package java.util;
public interface EventListener
{}
Một giao diện không có phương thức nào trong nó được gọi là giao diện gắn thẻ . Có hai mục đích thiết kế cơ bản về gắn thẻ giao diện

Tạo một phụ huynh chung - Giống như với giao diện EventListener, được mở rộng bởi hàng tá giao diện khác trong API Java, bạn có thể sử dụng một giao diện gắn thẻ để tạo một phụ huynh chung trong một nhóm các giao diện. Ví dụ, khi một giao diện mở rộng EventListener, JVM biết rằng giao diện cụ thể này sẽ được sử dụng trong một kịch bản ủy nhiệm sự kiện.

Thêm kiểu dữ liệu vào một lớp - Tình huống này là nơi mà thuật ngữ, gắn thẻ đến từ đó. Một lớp thực hiện một giao diện gắn thẻ không cần phải định nghĩa bất kỳ phương thức nào (vì giao diện không có bất kỳ phương thức nào), nhưng lớp đó trở thành một loại giao diện thông qua đa hình.

Không có nhận xét nào:

Đăng nhận xét

Lập trình Java - Ngoại lệ

Một ngoại lệ (hoặc sự kiện đặc biệt) là một vấn đề phát sinh trong quá trình thực hiện chương trình. Khi xảy ra Ngoại lệ , luồng bình thường...