Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa phương thức giao diện mặc định và tĩnh trong Java 8.

Theo Javadocs của Oracle -

Các phương pháp mặc định cho phép bạn thêm chức năng mới vào giao diện thư viện của mình và đảm bảo khả năng tương thích nhị phân với mã được viết cho các phiên bản cũ hơn của các giao diện đó.

Phương thức tĩnh là một phương thức được liên kết với lớp mà nó được định nghĩa chứ không phải với bất kỳ đối tượng nào. Mọi phiên bản của lớp đều chia sẻ các phương thức tĩnh của nó.

Phương thức tĩnh trong giao diện là một phần của lớp giao diện không thể triển khai hoặc ghi đè nó trong khi lớp có thể ghi đè phương thức mặc định.

Sr. Không. Phím Phương pháp giao diện tĩnh Phương pháp Mặc định
1
Cơ bản
Đây là một phương thức tĩnh chỉ thuộc về giao diện. Chúng tôi có thể viết triển khai của phương thức này trong chính giao diện
Đây là một phương thức với từ khóa mặc định và lớp có thể ghi đè phương thức này
2
Lời gọi Phương thức
Phương thức static chỉ có thể gọi trên lớp giao diện chứ không phải trên lớp.
Nó có thể được gọi trên giao diện cũng như lớp
3
Tên phương thức
Giao diện và lớp thực thi, cả hai đều có thể có phương thức tĩnh có cùng tên mà không cần ghi đè lẫn nhau.
Chúng ta có thể ghi đè phương thức mặc định trong việc triển khai lớp
4.
Trường hợp Sử dụng
Nó có thể được sử dụng như một phương thức tiện ích
Nó có thể được sử dụng để cung cấp chức năng chung trong tất cả các lớp triển khai

Ví dụ về phương thức Mặc định và Tĩnh trong giao diện

public interface DefaultStaticExampleInterface {
   default void show() {
      System.out.println("In Java 8- default method - DefaultStaticExampleInterface");
   }
   static void display() {
      System.out.println("In DefaultStaticExampleInterface I");
   }
}
public class DefaultStaticExampleClass implements DefaultStaticExampleInterface {
}
public class Main {
   static void main(String args[]) {
      // Call interface static method on Interface
      DefaultStaticExampleInterface.display();
      DefaultStaticExampleClass defaultStaticExampleClass = new DefaultStaticExampleClass();
     
      // Call default method on Class
      defaultStaticExampleClass.show();
   }
}