<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Java 接口示例 > 原文: [https://javatutorial.net/java-interface-example](https://javatutorial.net/java-interface-example) 在本教程中,我將向您展示如何創建和使用 **Java 接口**。 與往常一樣,我將演示 Java 接口的實際示例。 ![](https://img.kancloud.cn/07/cb/07cb8c6f05075fc6f0a8789bf4c2e964_700x500.jpg) ## 什么是 Java 接口? 與許多其他 Java 概念一樣,接口是從真實場景中派生而來的,其主要目的是按照嚴格的規則使用對象。 例如,如果您想打開洗衣機來洗衣服,則需要按開始按鈕。 此按鈕是您與洗衣機內部電子設備之間的接口。 Java 接口具有相同的行為:它們對如何與對象進行交互設置了嚴格的規則。 要查找有關 [Java 對象的更多信息,請閱讀本教程](https://javatutorial.net/java-objects-and-classes-tutorial)。 Java 接口表示一組帶有空主體的方法。 嗯,在接口中包含完整的方法列表不是強制性的 - 它們可以為 0 或更多…但是,無論方法的數量如何,它們都應該為空。 ## 創建一個接口 以洗衣機為例,使用一種方法`startButtonPressed()`創建一個名為`WashingMachine`的接口 ```java public interface WashingMachine { public void startButtonPressed(); } ``` 定義接口就這些了。 注意關鍵字`interface`的用法。 方法`startButtonPressed()`沒有正文。 它以結尾; 當然,您也可以使用具有返回類型和參數的方法,例如:`public int changeSpeed(int speed);` ## 如何實現接口 現在,我們將創建一個**實現我們的接口**的類。 繼續該示例,我們將創建具有“開始”按鈕的特定品牌的洗衣機。 ```java public class SamsungWashingMachine implements WashingMachine { @Override public void startButtonPressed() { System.out.println("The Samsung washing machine is now running."); } } ``` 我們在類聲明中使用`implements`關鍵字。 我們需要實現`startButtonPressed`方法(為它提供一些功能),否則我們的類將無法編譯。 請注意,您可以在一類中實現多個接口。 您只需要在類聲明中用逗號分隔接口名稱,如下所示: ```java public class SamsungWashingMachine implements WashinMachine, Serializable, Comparable<WashinMachine> { ... } ``` ## 測試你的接口 現在讓我們創建一個小程序來測試我們的接口和實現 ```java public class Test { public static void main(String[] args) { WashinMachine samsungWashinMachine = new SamsungWashingMachine(); samsungWashinMachine.startButtonPressed(); } } ``` 該程序的輸出將是: ```java The Samsung washing machine is now running. ``` ## 使用接口聲明特定的對象特征 Java 接口還有另一種常見用法 - 告訴對象具有特定用途或特征。 讓我們再舉一個真實的例子。 你是在樹林里生存。 您會發現其他物體,并將它們放在背包中以備后用。 休息時,您會瀏覽找到的物體并食用一次可食用的物體。 首先,讓我們定義一個根本沒有方法的名為`FoundObject`的接口。 這些都是我們在樹林里發現的物體: ```java public interface FoundObject { } ``` 現在我們定義第二個接口`Eatable`。 我們將僅使用它來表示對象是否可食用 ```java public interface Eatable { public void eat(); } ``` 通過以下三個類,我們將定義我們在樹林中找到的對象–蘋果,樹莓和石頭 ```java public class Apple implements FoundObject, Eatable { private String name; public Apple(String name) { this.name = name; } @Override public void eat() { System.out.println("Yummy! you eat some " + this.name); } } ``` ```java public class Raspberry implements FoundObject, Eatable { private String name; public Raspberry(String name) { this.name = name; } @Override public void eat() { System.out.println("Yummy! you eat some " + this.name); } } ``` ```java public class Stone implements FoundObject { private String name; public Stone(String name) { this.name = name; } } ``` 現在讓我們編寫生存程序。 我們將在背包(數組)中收集找到的物品,并嘗試吃掉它們 ```java public class WoodsSurvival { public static void main(String[] args) { // create an array of type FoundObject FoundObject backpack [] = new FoundObject[3]; // create the objects we found in the woods FoundObject apple = new Apple("apple"); FoundObject stone = new Stone("stone"); FoundObject raspberry = new Raspberry("raspberry"); // add the found objects to the backpack backpack[0] = apple; backpack[1] = stone; backpack[2] = raspberry; // iterate over the found objects for (int i=0; i<backpack.length; i++) { FoundObject currentObject = backpack[i]; // check if object is eatable if (currentObject instanceof Eatable) { // cast the object to eatable and execute eat method ((Eatable) currentObject).eat(); } } } } ``` 該程序的輸出為: ```java Yummy! you eat some apple Yummy! you eat some raspberry ``` **代碼說明了** 首先,我們創建接口`FoundObject`的唯一目的是表示特定類型的對象,因此我們可以將它們放在同一數組中。 我們創建`Eatable`接口以標記可以食用的對象。 當我們創建三個對象(蘋果,樹莓和石頭)時,我們將所有對象的類都聲明為`implements FoundObject`,而我們可以食用的對象也實現了`Eatable`接口。 在`WoodsSurvival`類中,我們首先創建一個`FoundObject`類型的數組。 我們稍后創建的三個對象的類型也都是`FoundObject`,因此我們可以將它們放在同一數組中。 關注本文,以了解有關 [Java 數組](https://javatutorial.net/java-array)的更多信息。 迭代數組時,我們檢查當前對象是否為`Eatable`類型。 我們在`instanceof keyford`的幫助下進行此操作。 如果兩個對象屬于同一類型,則`instanceof`返回`true`。 在我們的案例中,使用`instanceof Eatable`進行檢查時,蘋果和樹莓將返回 true,因為兩者均實現了`Eatable`接口。 為了能夠執行`eat()`方法,我們需要首先將對象顯式類型轉換為`Eatable`。 我們使用以下代碼行實現此目的: ```java ((Eatable) currentObject).eat(); ``` 我們無法執行石頭對象的`eat`方法,因為它不是`Eatable`類型。 ## 結論 可以使用[抽象類](https://javatutorial.net/java-abstraction-example),[集合](https://javatutorial.net/java-collection-tutorial)和[繼承](https://javatutorial.net/java-inheritance-example)以更時髦的方式編寫上面的代碼示例。 其中一些是更高級的主題,將在下一個教程中進行說明。 這是一個初學者教程,旨在僅說明 Java 接口。
                  <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>

                              哎呀哎呀视频在线观看