<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 接口 > 原文: [https://javabeginnerstutorial.com/core-java-tutorial/java-interface/](https://javabeginnerstutorial.com/core-java-tutorial/java-interface/) 定義合同意味著創建接口。 該合同規定了一個類可以做什么而不必強制它應??該怎么做。 在本 Java 接口教程中,我們將討論接口。 如何創建一個和應用于接口的規則。 ## 聲明接口 可以使用`interface`關鍵字定義接口。 在 Java 8 之后,接口定義發生了很多變化。 ## Java 接口示例 ```java public interface MyInterface { int i=0; public void Height(int height); public abstract void setHeight(); } ``` ## Java 8 接口示例 ```java package com.jbt; public interface Interface_JAVA8 { public void method(); public abstract void method1(); public default void method2() { } public static void method3() { } } ``` Java 8 引入了默認方法的概念。 現在,如果接口不是抽象的,則可以包含方法主體。 接口內部的方法可以包含“抽象”,“靜態”或“默認”修飾符。 ## Java 9 接口私有方法 在 Java 9 中,允許在接口中使用私有方法。 ## 接口聲明規則 接口需要遵循一些規則。 * 所有接口方法都是*隱式公開抽象*的。 即使您使用關鍵字,也不會產生問題,如第二個方法聲明中所見。 (在 Java 8 之前) * 接口只能聲明*常量*。 實例變量是不允許的。 這意味著接口內的所有變量必須是公開的,靜態的,最終的。 接口內的變量是*隱式公開靜態最終*的。 * 接口方法不能為*靜態*。 (在 Java 8 之前) * 接口方法不能是`final`,`strictfp`或`native`。 * 該接口可以*擴展*一個或多個其他接口。 注意:該接口只能擴展另一個接口。 ## 接口聲明規則(JAVA 8) 接口邏輯在 Java 8 中已更改。因此,上述某些邏輯不適用于 Java 8 之后的接口。 * 所有接口方法都可以具有`abstract`,`static`或默認修飾符。 * 如果對方法使用`static`或`default`修飾符,則接口方法可以具有主體。 ## 接口與抽象類 *接口*就像*100% 抽象類*一樣。 接口不能具有*非抽象方法*,而抽象類則可以。 一個類可以實現多個接口,而只能擴展一個類。 由于抽象類屬于類的層次結構,因此它們可以擴展其他類,而接口只能擴展接口。 ## 在類中使用接口 用 Java 創建接口后如何利用接口? 為了利用我們需要利用給定的接口實現我們的類。 `Implement`關鍵字可用于此目的。 * * * ## 類實現接口的示例 **示例 1**: ```java public class InterfaceExampleOne implements interfaceOne { } interface interfaceOne { } ``` **示例 2**: ```java /* * As implmeneted Interface have any abstract method so this class * need to implement any method. */ class InterfaceExampleTwo implements interfaceTwo { @Override public void methhod() { System.out.println(var); } } /* * Below interface has an abstract method so implemented class needs to * implement this method unless and untill it is abstract itself */ interface interfaceTwo { public final int var = 9; public abstract void methhod(); } ``` **示例 3**: ```java /* * As below class is not abstract class and it is extending abstract class which * has not yet implemented the method from interface so this class is FORCED to * implement method from Interface in hierarachy(interfaceTwo). */ class InterfaceExampleTwo extends InterfaceExampleThree { @Override public void methhod() { System.out.println(var); } } /* * Below interface has an abstract method so implemented class needs to * implement this method unless and untill it is abstract itself */ interface interfaceTwo { public final int var = 9; public abstract void methhod(); } /* * Even if Interface has abstract method ABSTRACT CLASS is not forced to * implement it. Abstract class may/may not navigate this responsibility of * implementing abstract method to class which is not abstract. */ abstract class InterfaceExampleThree implements interfaceTwo { // Method from Interface is not implemented here } ``` ### 重點 * 接口是 100% 抽象類(**隱式**)。 在 Java 8 之后,它不成立。 * 接口可以由任何繼承樹中的任何類實現。 * 接口中的所有方法都是抽象的。 (在 Java 8 中為`abstract`/`static`/默認) * 接口可以具有**常量**,這些常量是公開的,靜態的和最終的(**隱式**)。 * 接口方法是隱式公開和抽象的。 (在 Java 8 之前) * 接口也可以具有私有方法。 (Java 9) * 實現接口的類也可以是抽象類。 * 實現接口的抽象類不必實現所有抽象方法。 * 一個類可以*實現多個*接口。 * 接口不能擴展類或實現接口。 * 一個接口可以擴展另一個接口。 * 實現接口的非抽象類需要遵循一些規則。 1. 此類需要提供所有抽象方法的具體實現。 2. 必須遵守所有覆蓋規則。 3. 它必須維護方法的確切簽名。 * 在 Java 9 更改之后,接口看上去很像抽象類,但是還是有一些區別。 * 抽象類可以具有帶有不同修飾符的變量,這些修飾符不是常數 * 抽象類中的方法可以具有不同于私有或公開簽名的簽名
                  <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>

                              哎呀哎呀视频在线观看