<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                接口類似于類,但接口的成員沒有執行體,它只是方法、屬性、事件和索引符的組合而已。接口不能被實例化,接口沒有構造方法,沒有字段。在應用程序中,接口就是一種規范,它封裝了可以被多個類繼承的公共部分。 ## 1、定義接口 Java 接口的定義方式與類基本相同,不過接口定義使用的關鍵字是 interface,接口定義由接口聲明和接口體兩部分組成。語法格式如下: ``` [public] interface 接口名 [extends 接口1, [接口2, ...]] { // 聲明常量 [public] [static] [final] 數據類型 常量名 = 常量值; // 聲明方法 [public] [abstract] 返回值類型 方法名稱(參數列表); } ``` > 提示:如果接口本身被定義為 public,則所有的方法和常量都是 public 型的。 ## 2、接口成員——抽象方法和常量 接口對于其聲明、變量和方法都做了許多限制,如下: * 具有 public 訪問控制符的接口,允許任何類使用;沒有指定 public 的接口,其訪問將局限于所屬的包。 * 方法的聲明不需要其他修飾符,在接口中聲明的方法,將隱式地聲明為公有的(public)和抽象的(abstract)。 * 在 Java 接口中聲明的變量其實都是常量,接口中的變量聲明,將隱式地聲明為 public、static 和 final,即常量,所以接口中定義的變量必須初始化。 * 接口沒有構造方法,不能被實例化。 * 一個接口不能夠實現另一個接口,但它可以繼承多個其他接口。子接口可以對父接口的方法和常量進行重寫。 ``` public interface MyInterface { String name; // 不合法,變量name必須初始化 int age = 20; // 合法,等同于 public static final int age = 20; void getInfo(); // 方法聲明,等同于 public abstract void getInfo(); } ``` 【選擇】閱讀下面的 Java 代碼,能夠填寫在(1)處的語句是()(選擇一項) ``` public interface ILog { //(1) } ``` ``` A private int MAX_LOG_SIZE = 1000; B public void printLog() { System.out.println("print the log"); } C private boolean saveToFile(String fileName); D int getSize(); ``` 【選擇】下列關于 Java 中接口的說法不正確的是()(選擇一項) ``` A 接口中方法的訪問修飾符默認為 public B 接口中的方法如果寫成 void test(); 的形式,默認是抽象方法 C 實現接口的類中在重寫接口中方法時訪問修飾符可以為 protected D 當類實現接口時,需要實現接口中所有的抽象方法,否則需要將該類設置為抽象類 ``` 【選擇】運行下列代碼時,哪個位置會發生編譯報錯()(選擇一項) ``` interface A { // (1) public static final int TEMP; // (2) public abstract void info(); // (3) } ``` ``` A 位置一 B 位置二 C 位置三 D 不存在錯誤 ``` ## 3、接口成員——默認方法和靜態方法 默認方法可以通過實現接口的類實例化的對象來調用。需要注意的是,此處的靜態方法只能被`public`修飾(或者省略不寫),不能是`private`或者`protected`。 ``` public interface MyInterface { // 默認方法 default void hello () { System.out.println("say hello"); } // 靜態方法 static void world() { System.out.println("say world"); } } public class Test implements MyInterface { public static void main(String[] args) { Test test = new Test(); test.hello(); // 調用默認方法 MyInterface.world(); // 調用靜態方法 } } ``` 【選擇】在實現類中劃線處加入下列哪條代碼可以調用 IAa 接口中默認的方法()(選擇一項) ``` public interface IAa { default void show() { System.out.println("我是默認方法"); } } public class B implements IAa { public void show() { _______________ System.out.println("重寫默認方法"); } } ``` ``` A IAa.show(); B super.show(); C IAa.super.show(); D B.super.show(); ``` 【選擇】下列代碼的運行結果是()(選擇一項) ``` public interface IA { int TEMP = 10; } public interface IB extends IA { String TEMP = "temp"; } public class Test implement IA, IB { public static void main(String[] args) { IA a = new Test(); IB b = new Test(); System.out.print(a.TEMP); System.out.println(b.TEMP); } } ``` ## 4、接口的實現 接口被定義后,一個或者多個類都可以實現該接口,這需要在實現接口的類的定義中包含 implements 子句,然后實現由接口定義的方法。實現接口的一般形式如下: ``` <public> class <類名> [extends 父類] [implements 接口1 [, 接口2...]] { // ... } ``` 如果一個類實現多個接口,這些接口需要使用逗號分隔。實現接口的方法必須聲明為 public,而且實現方法的類型必須嚴格與接口定義中指定的類型相匹配。 【編程】使用接口的知識,定義接口 IFLY,創建三個類 Plane 類、Bird 類、Balloon 類,分別重寫接口中的 fly() 方法,然后再測試類中進行調用。程序運行參考效果如圖所示: ``` 飛機在天上飛 小鳥在天空翱翔 氣球飛上天空 ``` ``` public class Test { public static void main(String[] args) { // 1. 對象實例化 // 2. 分別調用 fly() 方法 } } public interface IFly { // 創建方法 fly() } // 實現接口 IFly public class Plane { // 重寫 fly 方法 } // 實現接口 IFly public class Bird { // 重寫 fly 方法 } // 實現接口 IFly public class Balloon { // 重寫 fly 方法 } ```
                  <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>

                              哎呀哎呀视频在线观看