Thứ Bảy, 16 tháng 2, 2019

Học Java - Giao diện

Một giao diện là một kiểu tham chiếu trong Học 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 pháp 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.

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ố, phương thức mặc định, phương thức tĩnh và các kiểu lồng nhau. Các thân 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.

Học lập trình Java chuyên nghiệp
Học lập trình Java chuyên nghiệp

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 được xác định 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ố lượng phương thức.

Một giao diện được viết trong một tệp có phần mở rộng . Học lập trình Java, với tên của giao diện khớp với tên của tệp.

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

Các giao diện xuất hiện trong các gói và tệp mã byte 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.

Một giao diện không chứa bất kỳ nhà xây dựng.

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

Một giao diện không thể chứa các trường thể hiện. 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 cùng.

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

Sau đây là một 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\
}

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

Một giao diện là hoàn toàn trừu tượng. Bạn không cần sử dụng từ khóa trừu tượng trong khi khai báo 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 đó không cần từ khóa trừu tượng.

Các phương thức trong một giao diện hoàn toàn công khai Học lập trình Java.
/* 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ĩ về 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, thì 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.
/* 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

Mammal eats
Mammal travels

Khi ghi đè các phương thức được xác định trong giao diện, có một số quy tắc phải 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 triển khai 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 Học lập trình Java.

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

Một lớp thực hiện chính 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 giao diện triển khai, có một số quy tắc

Một lớp có thể thực hiện nhiều giao diện cùng một lúc.

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 giống như cách 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 được mở rộng bởi giao diện Khúc côn cầu và Bóng đá.
// 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 thức, nhưng nó thừa hưởng hai phương thức từ Thể thao; do đó, một lớp thực hiện Khúc côn cầu cần thực hiện tất cả sáu phương thức.

Tương tự, một lớp thực hiện Bóng đá cần xác định ba phương thức từ Bóng đá và hai phương thức từ Thể thao.

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


Một lớp Học lập trình Java chỉ có thể mở rộng một lớp cha. Nhiều di sản không được phép. Tuy nhiên, các giao diện không phải là các lớp và một giao diện có thể mở rộng nhiều hơn một giao diện cha.

Từ khóa 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 tá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à
public interface Hockey extends Sports, Event

Giao diện gắn thẻ

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à
package java.util;
public interface EventListener
{}
Một giao diện không có phương thức trong đó được gọi là giao diện gắn thẻ . Có hai mục đích thiết kế cơ bản của giao diện gắn thẻ

Tạo cha mẹ chung - Cũng như giao diện EventListener, được mở rộng bởi hàng tá giao diện khác trong API Học lập trình Java, bạn có thể sử dụng giao diện gắn thẻ để tạo cha mẹ chung trong một nhóm 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 kịch bản ủy quyền sự kiện.

Thêm một kiểu dữ liệu vào một lớp - Tình huống này là nơi thuật ngữ, gắn thẻ xuất phát. Một lớp thực hiện giao diện gắn thẻ không cần xác định bất kỳ phương thức nào (vì giao diện không có bất kỳ), 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...