Đang thực hiện
Tên đăng nhập
Mật khẩu
 
Hoặc đăng nhập bằng:
Nhập lại mật khẩu

Trang chủ Cẩm nang học viên
Cẩm nang học viên

Java 8 - Triển khai thực hiện phương thức mặc định trong các interface

Cập nhật: 21/08/2018 Lượt xem: 593
Java 8 giới thiệu một khái niệm mới về triển khai thực hiện phương thức mặc định trong các interface. Khả năng này được bổ sung cho khả năng tương thích ngược để các interface cũ có thể được sử dụng để tận dụng khả năng biểu thức lambda của Java 8.

java-8-default-methods


Java 8 giới thiệu một khái niệm mới về triển khai thực hiện phương thức mặc định trong các interface. Khả năng này được bổ sung cho khả năng tương thích ngược để các interface cũ có thể được sử dụng để tận dụng khả năng biểu thức lambda của Java 8.
 

Ví dụ: interface List hoặc Collection không có khai báo phương thức forEach(). Do đó, việc thêm phương thức như vậy sẽ đơn giản phá vỡ các triển khai framework. Java 8 giới thiệu phương thức mặc định để interface List / Collection có thể thực hiện mặc định phương thức forEach() và lớp triển khai thực hiện các interface này không cần buộc override chúng.

Cú pháp:




 

Nhiều Default


Với các hàm default trong các interface, có khả năng là một lớp đang triển khai hai interface với cùng các phương thức mặc định. Đoạn mã sau giải thích sự mơ hồ này có thể được giải quyết như thế nào.


 

1. Giải pháp đầu tiên là tạo một phương thức riêng để ghi đè cài đặt mặc định.


 
 

2. Giải pháp thứ hai là gọi phương thức mặc định của interface được chỉ định bằng cách sử dụng siêu.


 
 

Phương thức mặc định tĩnh


Một interface cũng có thể có các phương thức trợ giúp tĩnh từ Java 8 trở đi.



Code Demo:
 
public class Java8Tester {

   public static void main(String args[]) {
      Vehicle vehicle = new Car();
      vehicle.print();
   }
}

interface Vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
         
   static void blowHorn() {
      System.out.println("Blowing horn!!!");
   }
}

interface FourWheeler {

   default void print() {
      System.out.println("I am a four wheeler!");
   }
}

class Car implements Vehicle, FourWheeler {

   public void print() {
      Vehicle.super.print();
      FourWheeler.super.print();
      Vehicle.blowHorn();
      System.out.println("I am a car!");
   }
}

MinhVT
Tư vấn viên 1: Lê Thoa
Tư vấn viên 2: Thu Huyền
Tuyển sinh lập trình viên quốc tế - MMS new vision
Khóa học C&B Excel - Trần Văn Hải