Giao diện là một lớp trừu tượng hoàn toàn giúp trừu tượng hóa Java. Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các giao diện trong Java với sự trợ giúp của các ví dụ.

Bạn đang xem : sử dụng giao diện java

Giao diện là một lớp trừu tượng hoàn toàn. Nó bao gồm một nhóm các phương thức trừu tượng (các phương thức không có phần thân).

Chúng tôi sử dụng từ khóa interface để tạo giao diện trong Java. Ví dụ:

 giao diện Ngôn ngữ {
  public void getType ();

  public void getVersion ();
}  

Đây,

  • Ngôn ngữ là một giao diện.
  • Nó bao gồm các phương thức trừu tượng: getType () getVersion () .

Triển khai một giao diện

Giống như các lớp trừu tượng, chúng ta không thể tạo các đối tượng của giao diện.

Để sử dụng một giao diện, các lớp khác phải triển khai nó. Chúng tôi sử dụng từ khóa implements để triển khai một giao diện.

Ví dụ 1: Giao diện Java

 interface Polygon {
  void getArea (int length, int breadth);
}

// triển khai giao diện Polygon
class Rectangle thực hiện Polygon {

  // thực thi phương thức trừu tượng
  public void getArea (int length, int breadth) {
    System.out.println ("Diện tích hình chữ nhật là" + (chiều dài * chiều rộng));
  }
}

lớp chính {
  public static void main (String [] args) {
    Rectangle r1 = new Rectangle ();
    r1.getArea (5, 6);
  }
}  

Đầu ra

Diện tích của hình chữ nhật là 30 

Trong ví dụ trên, chúng tôi đã tạo một giao diện có tên Polygon. Giao diện chứa một phương thức trừu tượng getArea () .

Ở đây, lớp Rectangle triển khai Polygon. Và, cung cấp việc triển khai phương thức getArea () .

Ví dụ 2: Giao diện Java

 // tạo giao diện
ngôn ngữ giao diện {
  void getName (Tên chuỗi);
}

// lớp thực thi giao diện
class ProgrammingLanguage triển khai Ngôn ngữ {

  // thực thi phương thức trừu tượng
  public void getName (Tên chuỗi) {
    System.out.println ("Ngôn ngữ lập trình:" + tên);
  }
}

lớp chính {
  public static void main (String [] args) {
    Ngôn ngữ ProgrammingLanguage = new ProgrammingLanguage ();
    language.getName ("Java");
  }
}  

Đầu ra

Ngôn ngữ lập trình: Java 

Trong ví dụ trên, chúng tôi đã tạo một giao diện có tên là Ngôn ngữ. Giao diện bao gồm một phương thức trừu tượng getName () .

Ở đây, lớp ProgrammingLanguage triển khai giao diện và cung cấp cách triển khai cho phương thức.

Triển khai nhiều giao diện

Trong Java, một lớp cũng có thể triển khai nhiều giao diện. Ví dụ:

 giao diện A {
  // thành viên của A
}

giao diện B {
  // thành viên của B
}

lớp C thực hiện A, B {
  // các thành viên trừu tượng của A
  // các thành viên trừu tượng của B
}  

Mở rộng Giao diện

Tương tự như các lớp, giao diện có thể mở rộng các giao diện khác. Từ khóa expand được sử dụng để mở rộng giao diện. Ví dụ:

 giao diện Dòng {
  // các thành viên của giao diện Line
}

// mở rộng giao diện
interface Đa giác mở rộng Dòng {
  // các thành viên của giao diện Polygon
  // các thành viên của giao diện Line
}  

Tại đây, giao diện Đa giác mở rộng giao diện Đường. Bây giờ, nếu bất kỳ lớp nào triển khai Polygon, nó sẽ cung cấp các triển khai cho tất cả các phương thức trừu tượng của cả Line và Polygon.

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

Một giao diện có thể mở rộng nhiều giao diện. Ví dụ:

 giao diện A {
   ...
}
giao diện B {
   ...
}

giao diện C mở rộng A, B {
   ...
}  

Ưu điểm của Giao diện trong Java

Xem Thêm  Tải lên tệp bằng HTML - mẫu tải lên tệp html

Bây giờ chúng ta đã biết giao diện là gì, hãy cùng tìm hiểu lý do tại sao giao diện được sử dụng trong Java.

  • Tương tự như các lớp trừu tượng, giao diện giúp chúng ta đạt được tính trừu tượng trong Java .

    Ở đây, chúng ta biết getArea () tính diện tích đa giác nhưng cách tính diện tích khác nhau đối với các đa giác khác nhau. Do đó, việc triển khai getArea () là độc lập với nhau.

  • Các giao diện cung cấp thông số kỹ thuật mà một lớp (triển khai nó) phải tuân theo.

    Trong ví dụ trước, chúng tôi đã sử dụng getArea () làm đặc tả bên trong Đa giác giao diện. Điều này giống như thiết lập một quy tắc mà chúng ta có thể có được diện tích của mọi đa giác.

    Giờ đây, bất kỳ lớp nào triển khai giao diện Đa giác đều phải cung cấp triển khai cho phương thức getArea () .

  • Các giao diện cũng được sử dụng để đạt được đa kế thừa trong Java. Ví dụ:
     giao diện Dòng {
    …
    }
    
    giao diện Polygon {
    …
    }
    
    class Rectangle thực hiện Line, Polygon {
    …
    }  

    Ở đây, lớp Rectangle đang triển khai hai giao diện khác nhau. Đây là cách chúng tôi đạt được đa kế thừa trong Java.

Lưu ý : Tất cả các phương thức bên trong giao diện đều là public ngầm định và tất cả các trường đều là public static final . Ví dụ:

 giao diện Ngôn ngữ {
  
  // theo mặc định public static final
  String type = "ngôn ngữ lập trình";

  // theo mặc định là công khai
  void getName ();
}  

các phương thức mặc định trong Java Interfaces

Với việc phát hành Java 8, giờ đây chúng ta có thể thêm các phương thức có triển khai bên trong giao diện. Các phương thức này được gọi là phương thức mặc định.

Để khai báo các phương thức mặc định bên trong giao diện, chúng tôi sử dụng từ khóa default . Ví dụ:

 public default void getSides () {
   // phần thân của getSides ()
}  

Tại sao lại sử dụng phương thức mặc định?

Hãy xem một tình huống để hiểu lý do tại sao các phương thức mặc định được giới thiệu trong Java.

Giả sử, chúng ta cần thêm một phương thức mới vào giao diện.

Chúng tôi có thể thêm phương thức vào giao diện của mình một cách dễ dàng mà không cần triển khai. Tuy nhiên, đó không phải là kết thúc của câu chuyện. Tất cả các lớp của chúng tôi triển khai giao diện đó phải cung cấp triển khai cho phương thức.

Nếu một số lượng lớn các lớp đang triển khai giao diện này, chúng tôi cần theo dõi tất cả các lớp này và thực hiện các thay đổi đối với chúng. Điều này không chỉ tẻ nhạt mà còn dễ xảy ra lỗi.

Để giải quyết vấn đề này, Java đã giới thiệu các phương pháp mặc định. Các phương thức mặc định được kế thừa giống như các phương thức thông thường.

Hãy lấy một ví dụ để hiểu rõ hơn về các phương thức mặc định.

Ví dụ: Phương thức mặc định trong giao diện Java

 interface Polygon {
  void getArea ();

  // phương thức mặc định
  void getSides mặc định () {
    System.out.println ("Tôi có thể lấy các cạnh của một đa giác.");
  }
}

// triển khai giao diện
class Rectangle thực hiện Polygon {
  public void getArea () {
    int length = 6;
    int breadth = 5;
    int area = length * breadth;
    System.out.println ("Diện tích hình chữ nhật là" + diện tích);
  }

  // ghi đè getSides ()
  public void getSides () {
    System.out.println ("Ta có 4 cạnh.");
  }
}

// triển khai giao diện
class Square thực hiện Polygon {
  public void getArea () {
    int length = 5;
    int area = length * length;
    System.out.println ("Diện tích hình vuông là" + diện tích);
  }
}

lớp chính {
  public static void main (String [] args) {

    // tạo một đối tượng Rectangle
    Rectangle r1 = new Rectangle ();
    r1.getArea ();
    r1.getSides ();

    // tạo một đối tượng Square
    Square s1 = new Square ();
    s1.getArea ();
    s1.getSides ();
  }
}  

Đầu ra

Diện tích của hình chữ nhật là 30
Tôi có 4 mặt.
Diện tích của hình vuông là 25
Tôi có thể lấy các cạnh của một đa giác. 

Trong ví dụ trên, chúng tôi đã tạo một giao diện có tên Polygon. Nó có một phương thức mặc định getSides () và một phương thức trừu tượng getArea () .

Ở đây, chúng tôi đã tạo hai lớp Hình chữ nhật và Hình vuông để triển khai Đa giác.

Lớp Rectangle cung cấp việc triển khai phương thức getArea () và ghi đè phương thức getSides () . Tuy nhiên, lớp Square chỉ cung cấp việc triển khai phương thức getArea () .

Bây giờ, trong khi gọi phương thức getSides () bằng đối tượng Rectangle, phương thức ghi đè được gọi. Tuy nhiên, trong trường hợp của đối tượng Square, phương thức mặc định được gọi.

các phương thức riêng và tĩnh trong giao diện

Java 8 cũng đã thêm một tính năng khác để bao gồm các phương thức tĩnh bên trong giao diện.

Tương tự như một lớp, chúng ta có thể truy cập các phương thức tĩnh của một giao diện bằng cách sử dụng các tham chiếu của nó. Ví dụ:

 // tạo giao diện
giao diện Polygon {
  staticMethod () {..}
}

// truy cập phương thức tĩnh
Polygon.staticMethod ();  

Lưu ý : Với việc phát hành Java 9, các phương thức riêng tư cũng được hỗ trợ trong các giao diện.

Chúng tôi không thể tạo các đối tượng của một giao diện. Do đó, các phương thức riêng được sử dụng làm phương thức trợ giúp cung cấp hỗ trợ cho các phương thức khác trong giao diện.

Ví dụ thực tế về giao diện

Hãy xem một ví dụ thực tế hơn về Giao diện Java.

 // Để sử dụng hàm sqrt
nhập java.lang.Math;

giao diện Polygon {
   void getArea ();
  
 // tính chu vi của một Đa giác
   void getPerimeter (int ... bên) {
      chu vi int = 0;
      for (int side: side) {
         chu vi + = bên;
      }

   System.out.println ("Chu vi:" + chu vi);
   }
}

class Triangle thực hiện Polygon {
   int riêng a, b, c;
   đôi riêng tư, khu vực;

// khởi tạo các cạnh của tam giác
   Tam giác (int a, int b, int c) {
      this.a = a;
      this.b = b;
      this.c = c;
      s = 0;
   }

// tính diện tích hình tam giác
   public void getArea () {
      s = (gấp đôi) (a + b + c) / 2;
      area = Math.sqrt (s * (s-a) * (s-b) * (s-c));
      System.out.println ("Diện tích:" + diện tích);
   }
}

lớp chính {
   public static void main (String [] args) {
      Tam giác t1 = new Triangle (2, 3, 4);

// gọi phương thức của lớp Triangle
      t1.getArea ();

// gọi phương thức của Polygon
      t1.getPerimeter (2, 3, 4);
   }
}  

Đầu ra

Diện tích: 2.9047375096555625
Chu vi: 9 

Trong chương trình trên, chúng tôi đã tạo một giao diện có tên Polygon. Nó bao gồm một phương thức mặc định getPerimeter () và một phương thức trừu tượng getArea () .

Chúng tôi có thể tính chu vi của tất cả các đa giác theo cùng một cách nên chúng tôi đã triển khai phần thân của getPerimeter () trong Polygon.

Giờ đây, tất cả các đa giác triển khai Đa giác đều có thể sử dụng getPerimeter () để tính chu vi.

Tuy nhiên, quy tắc tính diện tích là khác nhau đối với các đa giác khác nhau. Do đó, getArea () được đưa vào mà không cần triển khai.

Bất kỳ lớp nào triển khai Đa giác đều phải cung cấp triển khai getArea () .


Xem thêm những thông tin liên quan đến chủ đề sử dụng java giao diện

Bài 2: Giới thiệu lập trình giao diện đồ họa người dùng (GUI) bằng Swing

  • Tác giả: Anh Nguyen Ngoc
  • Ngày đăng: 2020-05-22
  • Đánh giá: 4 ⭐ ( 9136 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lập trình Java 2 playlist: https://www.youtube.com/watch?v=NSFFYYM57WI&list=PLn9lhDYvf_3FxFyWM53Mt5kEJJOlRyGvt
    Nhóm thảo luận: https://www.facebook.com/groups/115838366528104

Thiết kế giao diện trong Java với Netbean [Update 2021]

  • Tác giả: tonghop.vn
  • Đánh giá: 3 ⭐ ( 5107 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Thiết kế giao diện trong java với netbean là một trong các từ khóa được gg search nhiều nhất về chủ đề tạo giao diện trong java. Trong java..

Chương IV: Các gói và giao diện

  • Tác giả: monhoc.vn
  • Đánh giá: 5 ⭐ ( 5055 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mục tiêu bài học Kết thúc chương này, các bạn có thể:  Định nghĩa một giao diện  Cài đặt một giao diện  Sử dụng giao diện như là một kiểu dữ liệu  Định nghĩa gói  Tạo và sử dụng các gói  Vai trò của các gói trong việc điều khiển truy cập  Những thành phần của gói java.lang  Những

Interface trong Java – Tìm hiểu về giao diện trong Java

  • Tác giả: t3h.com.vn
  • Đánh giá: 3 ⭐ ( 9833 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài viết hôm nay, T3H sẽ cùng các bạn tìm hiểu về khái niệm Interface trong Java hay còn gọi là giao diện trong Java.

Giao diện Java

  • Tác giả: codefly.vn
  • Đánh giá: 4 ⭐ ( 9632 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Java: Interface (Giao diện)

  • Tác giả: v1study.com
  • Đánh giá: 3 ⭐ ( 6752 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Java không hỗ trợ đa thừa kế. Tuy nhiên, có một số trường hợp khi nó trở thành bắt buộc đối với một đối tượng để thừa kế các thuộc tính từ nhiều lớp để trá

Các bước lập trình giao diện Java Swing bằng Eclipse

  • Tác giả: niithanoi.edu.vn
  • Đánh giá: 5 ⭐ ( 8222 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hôm nay mình sẽ giới thiệu các bạn cách lập trình giao diện Java Swing bằng một IDE khác cũng mạnh không kém NetBeans, đó chính là Eclipse.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Tài liệu csv - pandas 1.4.3 - đọc dữ liệu từ tệp csv trong pandas python

By ads_php