# Java 接口示例 > 原文: [https://javatutorial.net/java-interface-example](https://javatutorial.net/java-interface-example) 在本教程中,我将向您展示如何创建和使用 **Java 接口**。 与往常一样,我将演示 Java 接口的实际示例。 ![](img/bd9a26ffe0204dc0807b7a7d3d1f5e3f.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 { ... } ``` ## 测试你的接口 现在让我们创建一个小程序来测试我们的接口和实现 ```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