Interface Trong Java Với Ví Dụ Cụ Thể - Deft Blog
Có thể bạn quan tâm
- Trong Interface Java.awt.event.actionlistener Có Khai Báo Phương Thức Nào
- Trong Internet Explorer để Hiện/ẩn Các Nút Công Cụ Chuẩn Người Ta Thực Hiện
- Trong Internet Explorer Muốn Sao Lưu Một Trang Web Vào Máy Tính Bạn Sử Dụng Lựa Chọn Nào
- Trong Internet Explorer Phiên Bản 9 Hoặc Mới Hơn Phím Tắt Chuyển đến Tab Liền Kề Bên Trái
- Trong Internet Thì Các Máy Tính Nhận Ra Nhau Là Nhờ
Mục lục
- 1 Cách sử dụng interface trong java
- 2 Cú pháp khai báo interface
- 3 Đa thừa kế trong interface
- 4 Tag và Marker interface trong java
- 5 Functional Interface
- 6 Các tính năng mới trong JDK 8
- 7 Note:
- 7.1 Các bài viết liên quan
Ở bài trước chúng ta đã tìm hiểu về abstract class được sử dụng để triển khai tính trừu tượng trong java.
Không giống như abstract class, interface được sử dụng để biểu diễn 100% tính trừu tượng. Trong một interface các method sẽ mặc định là abstract method. Nói đến interface chúng ta sẽ nhìn nhận nó như là một khuôn mẫu các hành động được cung cấp mà bạn không thể biết bên trong nó thực hiện như thế nào.
Cách sử dụng interface trong java
Như phần ở trên, interface được sử dụng để biểu diễn 100% tính trừu tượng.
Các method trong interface mặc định đều là asbtract method.
Trước mỗi method trong interface đều mặc định được thêm vào trước cặp từ khoá public static.
Các class implement interface phải implement tất cả các method được khai báo trong interface.
Các class trong java không được extends nhiều class, nhưng với có thể implement nhiều interface khác nhau.
Cú pháp khai báo interface
interface MyInterface { /* Tất các các method đều mặc định thêm public abstract method. * Các method không có thân hàm */ public void method1(); public void method2(); }Ví dụ: Chúng ta có interface Mail chứa các method sendMail(), log(). Class MailImpl sẽ implement Mail và triển khai các method mà Mail khai báo.
// File Mail.java public interface Mail { void sendMail(); void log(); } // File MailImpl.java public class MailImpl implements Mail { @Override public void sendMail() { System.out.println("Sending email"); } @Override public void log() { System.out.println("Log!!!"); } } // File Main.java public class Main { public static void main(String[] args) { Mail mail = new MailImpl(); mail.sendMail(); mail.log(); } }Output:
Sending emailLog!!!
Đa thừa kế trong interface
Trong java, các class thông thường thì chỉ được phép extends từ một class cha duy nhất có thể là một class khác hoặc abstract class. Thế nhưng trong interface chúng ta có thể extends nhiều interface khác.
Ví dụ chúng ta có 3 interface A, B, C. C sẽ extends từ A, B. InterfaceImpl sẽ implement C. đồng nghĩa với việc nó sẽ implement các method được định nghĩa trong cả 3 interface A, B, C.
// File A.java public interface A { void a(); } // File B.java public interface B { void b(); } // File C.java public interface C extends A, B { void c(); } public class InterfaceImpl implements C { @Override public void c() { System.out.println("C"); } @Override public void a() { System.out.println("A"); } @Override public void b() { System.out.println("C"); } } // File Main.java public class Main { public static void main(String[] args) { C c = new InterfaceImpl(); c.a(); c.b(); c.c(); } }Output:
ABC
Đặt câu hỏi nếu có abstract method được định nghĩa ở cả interface cha và con. Nếu một class implement interface con thì sẽ triển khai hàm nào? Câu trả lời là hàm nào cũng được ha.
Ví dụ
// File A.java public interface A { void demo(); } public interface C extends A{ void demo(); } // File InterfaceImpl.java public class InterfaceImpl implements C { @Override public void demo() { System.out.println("Demo"); } } // File Main.java public class Main { public static void main(String[] args) { C c = new InterfaceImpl(); c.demo(); } }Outout: Demo
Tag và Marker interface trong java
Một interface không chứa bất kỳ một method hay thuộc tính nào gọi là Tag hoặc Marker interface. Ví dụ Serializable, EventListener etc.
Functional Interface
Functional Interface là một interface chứa duy nhất một abstract method. Từ java 8 trở đi lambda expressions được sử dụng nhiều với functional interface để thể hiện một implement của nó.
Một functional interface có thể có nhiều default method, static method, nên các bạn đừng nhầm tưởng rằng functional interface lại có nhiều method thế kia nhé, nó chỉ có một abstract method duy nhất thôi!
Các tính năng mới trong JDK 8
Ở các phiên bản JDK 8 trở về trước, chúng ta sẽ không thể triển khai một mã code xử lý cho một hàm bên trong interface. Trong Java 8, chúng ta có ta có thể sử dụng default method trong interface cho phép triển khai mã code bên trong hàm.
interface In1 { final int a = 10; default void display() { System.out.println("hello"); } } class TestClass implements In1 { public static void main (String[] args) { TestClass t = new TestClass(); t.display(); } }Output: hello
Mục đích của default method sinh ra cho phép mã code Java mới tương thích với mã code ngủ. Ví dụ như mình có 1 interface được implement từ 5 class khác nhau, khi muốn thêm một chức năng mới vào interface, nếu mình thêm một method và interface thì biên dịch sẽ bị lỗi vì 5 class kia phải triển khai method này trong khi chúng không cần sử dụng. Do vậy mình sẽ định nghĩa một default method với mã code được triển khai bên trong, 5 class kia sẽ không cần phải triển khai, và mình có thể sử dụng tính năng mới này trong mã mới.
Thêm một tính năng mới nữa là chúng ta có thể sử dụng static method trong interface và có thể gọi trực tiếp mà không cần khởi tạo một object.
interface In1 { final int a = 10; static void display() { System.out.println("hello"); } } class TestClass implements In1 { // Driver Code public static void main (String[] args) { In1.display(); } }Output: hello
Một số tính năng mới trong JDK 9
Từ Java 9 trở đi, các giao diện cũng có thể chứa:
- Static methods
- Private methods
- Private Static methods
Note:
- Một interface không thể khởi tạo. Nghĩa là bạn không thể khởi tạo một object của interface.
- Interface cung cấp 100% tính trừu tượng với các method mặc định là abstract method.
- Class sử dụng từ khoá implement để implement một interface.
- Các class implement một interface bắt buộc phải triển khai tất cả các method được khai báo trong interface.
- Interface không để khai báo với từ khoá private hoặc protected
Các khởi tạo trên là không được phép.
Trong interface các biến mặc định là public, static và final
interface A { int a=10; public int a=10; public static final int a=10; final int a=10; static int a=0; }Các cách khai báo trên là giống như và nó sẽ đều là
public static final int a=10;Nguồn tham khảo
https://www.geeksforgeeks.org/interfaces-in-java/
Interface in java with example programs
Các bài viết liên quan
- Functional interface trong java
- Marker interface trong java
- Default method trong interface
- Static method trong interface
Từ khóa » Trong Interface Có Thể định Nghĩa
-
Interface Trong Java - Freetuts
-
Interface Trong Java - Học Java Cơ Bản đến Nâng Cao - VietTuts
-
Interface Trong Lập Trình Hướng đối Tượng Java | How Kteam
-
Interface Trong Lập Trình Hướng đối Tượng | How Kteam
-
Interface Là Gì? Interface Khác Gì Class? Đa Kế Thừa Trong Java Sử ...
-
Interface Là Gì? Đặc điểm Của Interface Và Khi Nào Thì Nên Dùng?
-
Interface Trong Java - Bạn đã Hiểu đúng? Nếu Chưa, Mời đọc Ngay
-
Interface Trong Java - KungFu Tech
-
Interface Là Gì? Mục đích Sử Dụng Của Interface - Hcare
-
Interface Trong Java
-
Java Bài 33: Interface - Yellow Code Books
-
Sử Dụng Interface Trong Java - Góc Học IT
-
Interface Là Gì? Những ý Nghĩa Của Interface
-
Abstract Class Và Interface, Bạn Có Thực Sự Hiểu Chúng ? - Viblo