<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之旅 廣告
                #### 特性 * 接口中的所有方法和變量都被隱式的聲明為public; * 接口中的變量被隱式的聲明為\(public static final\); * 如果類實現了某個接口,但是沒有實現該接口的全部方法,那么該類必須定義為abstract; * 一個類可以實現多個接口 * 如果一個類實現了一個接口,但是沒有實現接口的全部方法,那么該類必須定義為abstract * 可以將接口聲明為某個類或另外一個接口的成員,這種接口被稱為成員接口或嵌套接口 * 接口可以繼承另外一個接口 * 在接口中無法擁有實例變量;接口指定行為,而不是狀態; * 如果一個類繼承了一個父類且實現了一個接口,而且從接口和父類兩者繼承了相同的方法,只關心父類的方法,直接忽視接口的默認方法; * JAVA8允許在接口中定義靜態方法;但是這種做法違背將接口作為抽象規范的初衷; * 接口里定義的內部類、內部接口、內部枚舉默認都采用public static修飾符; #### 嵌套接口 * 可以將接口聲明為某個類或另一個接口的成員,這種接口被稱為成員接口或嵌套接口 #### 接口的多級繼承 如果接口A和B同時提供了eat\(\)默認方法,而類C同時實現了A和B兩個接口: * 如果類C重寫了eat\(\)方法,則使用類C的eat\(\)方法; * 如果類C沒有重寫eat\(\)方法,則會發生錯誤; * 如果B繼承了A接口,并都提供了默認的eat\(\)方法,則B的eat方法具有更高的優先級 * 顯示引用被繼承接口的默認方法: ``` InterfaceName.super.methodName() ``` #### 接口多級繼承規則 如果MyClass類實現了Alpha和Beta接口,且兩個接口都提供了名為reset\(\)的方法的默認實現:![](../assets/interface.png) #### 接口的靜態方法 JDK8支持在接口中定義一個或多個靜態方法,接口定義的靜態方法可以獨立于任何對象調用,與類的靜態方法調用一樣\(JDK8新特性\) 調用:interfaceName.staticMethodName ``` public interface InterfaceDemo { public static void say() { System.err.println("hello,world"); } } ``` ### 接口默認方法 * 默認方法的重要用法是"接口演化" * 接口的默認方法實現\(JDK8新特性\) ``` interface Person { void say(); default String eat() { return "eat"; } } ``` * 默認方法的一個重要用途是接口演化\(如果在Collection接口中添加一個stream方法,如果接口沒有提供默認方法實現,現有實現類均會報錯\);給接口添加一個非默認方法會導致源代碼不兼容; #### 常用接口 * Comparable * Comparator * Runnable * Callable定義返回類型為T的接口
                  <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>

                              哎呀哎呀视频在线观看