Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 其他

Java APIs 和框架

Java 類引用

Java 有用資源

Java - 私有介面方法



Java 9 中引入了私有和靜態私有介面方法。作為私有方法,這種方法無法透過實現類或子介面訪問。引入這些方法是為了允許封裝,其中某些方法的實現將僅保留在介面中。它有助於減少重複,提高可維護性,並編寫簡潔的程式碼。

Java 8 之前的介面

在 Java 8 之前,介面只能包含抽象方法和常量變數。因此,實現類必須實現相同的方法。請參見下面的示例。

示例

package com.tutorialspoint;

interface util {
   public int sum(int a, int b);
}

public class Tester implements util {
   public static void main(String[] args) {
      Tester tester = new Tester();
      System.out.println(tester.sum(2, 3));
   }

   @Override
   public int sum(int a, int b) {		  
      return a + b;
   }
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

5

在上面的示例中,我們可以看到實現類必須實現該方法,因為它實現了介面。

Java 8 中介面中的預設方法

使用 Java 8,引入了預設方法,我們可以提供方法的預設實現,而無需實現類實現它。此功能是為了促進 lambda 表示式,其中現有集合框架可以在不實現介面所有方法的情況下與新引入的函式式介面一起工作。這有助於避免重寫集合框架。請參見下面的示例

示例

package com.tutorialspoint;

interface util {
   public default int sum(int a, int b) {
      return a + b;
   }
}

public class Tester implements util {
   public static void main(String[] args) {
      Tester tester = new Tester();
      System.out.println(tester.sum(2, 3));
   }
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

5

Java 9 中介面中的私有方法

從 Java 9 開始,介面得到了進一步增強,可以包含私有方法。從 Java 9 開始,我們可以在介面中使用私有方法和私有靜態方法。這有助於封裝功能並有助於保持方法的完整性。由於私有方法不能被繼承,因此它們可以在介面的公共方法中使用,如下例所示

示例

package com.tutorialspoint;

interface util {
   public default int operate(int a, int b) {
      return sum(a, b);
   }
   private int sum(int a, int b) {
      return a + b;
   } 
}

public class Tester implements util {
   public static void main(String[] args) {
      Tester tester = new Tester();
      System.out.println(tester.operate(2, 3));
   }
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

5

Java 9 中介面中的私有靜態方法

類似地,我們可以使用私有靜態方法,該方法可以從靜態和非靜態方法中呼叫。請參見下面的示例

示例

package com.tutorialspoint;

interface util {
   public default int operate(int a, int b) {
      return sum(a, b);
   }
   private static int sum(int a, int b) {
      return a + b;
   } 
}

public class Tester implements util {
   public static void main(String[] args) {
      Tester tester = new Tester();
      System.out.println(tester.operate(2, 3));
   }
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

5

私有靜態方法不能在介面中呼叫非靜態方法,並且它在介面外部不可訪問。即使實現類也不能訪問私有靜態方法。

廣告