<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 接口中的私有方法 – Java 9 > 原文: [https://howtodoinjava.com/java9/java9-private-interface-methods/](https://howtodoinjava.com/java9/java9-private-interface-methods/) 從 Java 9 開始,您可以在接口中包含私有方法。 使用私有方法,現在也可以在接口中實現[封裝](//howtodoinjava.com/object-oriented/encapsulation-in-java-and-its-relation-with-abstraction/)。 在此 Java 9 教程中,我們將詳細了解**接口私有方法**。 ```java Table of Contents Interfaces till Java 7 Static and defaults methods since Java 8 Private methods since java 9 Java 9 Private Interface Method Example Summary ``` ## Java 7 接口 在 Java 7 和所有早期版本中,接口非常簡單。 它們只能包含**公共抽象**方法。 這些接口方法必須由選擇實現接口的類實現。 ```java public interface CustomInterface { public abstract void method(); } public class CustomClass implements CustomInterface { @Override public void method() { System.out.println("Hello World"); } public static void main(String[] args){ CustomInterface instance = new CustomClass(); instance.method(); } } Output: Hello World ``` ## 自 Java 8 以來的靜態方法和默認方法 在 [Java 8](//howtodoinjava.com/java-8-tutorial/) 中,除了**公共抽象**方法之外,您還可以使用**公共靜態**方法和**公共默認**方法。 ```java public interface CustomInterface { public abstract void method1(); public default void method2() { System.out.println("default method"); } public static void method3() { System.out.println("static method"); } } public class CustomClass implements CustomInterface { @Override public void method1() { System.out.println("abstract method"); } public static void main(String[] args){ CustomInterface instance = new CustomClass(); instance.method1(); instance.method2(); CustomInterface.method3(); } } Output: abstract method default method static method ``` [訪問修飾符](//howtodoinjava.com/object-directional/java-access-modifiers/)`public`在以上所有接口方法聲明中都是可選的。 我添加它們只是為了提高可讀性。 ## 自 Java 9 以來的私有方法 從 Java 9 開始,您將可以在接口中添加**私有方法**和**私有靜態方法**。 這些私有方法將改善接口內部的代碼可重用性。 舉例來說,如果需要兩個默認方法來共享代碼,則可以使用私有接口方法來共享代碼,但不必將該私有方法暴露給實現類。 在接口中使用私有方法有四個規則: 1. 接口私有方法不能是抽象的。 2. 私有方法只能在接口內部使用。 3. 私有靜態方法可以在其他靜態和非靜態接口方法中使用。 4. 私有非靜態方法不能在私有靜態方法內部使用。 ```java public interface CustomInterface { public abstract void method1(); public default void method2() { method4(); //private method inside default method method5(); //static method inside other non-static method System.out.println("default method"); } public static void method3() { method5(); //static method inside other static method System.out.println("static method"); } private void method4(){ System.out.println("private method"); } private static void method5(){ System.out.println("private static method"); } } public class CustomClass implements CustomInterface { @Override public void method1() { System.out.println("abstract method"); } public static void main(String[] args){ CustomInterface instance = new CustomClass(); instance.method1(); instance.method2(); CustomInterface.method3(); } } Output: abstract method private method private static method default method private static method static method ``` ## Java 9 接口私有方法示例 讓我們看一個演示,以了解接口私有方法的用法。 我正在創建具有兩個函數的計算器類。 第一個函數將接受一些整數并將所有偶數相加。 第二個函數將接受一些整數并將所有奇數相加。 #### `CustomCalculator.java` – 接口 ```java import java.util.function.IntPredicate; import java.util.stream.IntStream; public interface CustomCalculator { default int addEvenNumbers(int... nums) { return add(n -> n % 2 == 0, nums); } default int addOddNumbers(int... nums) { return add(n -> n % 2 != 0, nums); } private int add(IntPredicate predicate, int... nums) { return IntStream.of(nums) .filter(predicate) .sum(); } } ``` #### `Main.java` – 類 ```java public class Main implements CustomCalculator { public static void main(String[] args) { CustomCalculator demo = new Main(); int sumOfEvens = demo.addEvenNumbers(1,2,3,4,5,6,7,8,9); System.out.println(sumOfEvens); int sumOfOdds = demo.addOddNumbers(1,2,3,4,5,6,7,8,9); System.out.println(sumOfOdds); } } Output: 20 25 ``` ## 總結 簡而言之, **java 9 私有接口方法**可以是靜態的也可以是實例的。 在這兩種情況下,私有方法都不會被子接口或實現繼承。 它們主要是為了提高代碼僅在接口內的可重用性,從而改善封裝。 讓我們回顧一下 Java 9 中所有允許的方法類型。 | 方法類型 | 從何時起 | | --- | --- | | 公共抽象 | Java 7 | | 公共默認 | Java 8 | | 公共靜態 | Java 8 | | 私有 | Java 9 | | 私有靜態 | Java 9 | 將您的問題放在評論部分中。 學習愉快! 參考: [JEP 213](https://openjdk.java.net/jeps/213) [下載源碼](//howtodoinjava.com/wp-content/downloads/Java9-interface-private-methods.zip)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看