# 不断发展的接口

> 原文： [https://docs.oracle.com/javase/tutorial/java/IandI/nogrow.html](https://docs.oracle.com/javase/tutorial/java/IandI/nogrow.html)

考虑一个名为`DoIt`的开发接口：

```
public interface DoIt {
   void doSomething(int i, double x);
   int doSomethingElse(String s);
}

```

假设您稍后要为`DoIt`添加第三种方法，以便现在接口变为：

```
public interface DoIt {

   void doSomething(int i, double x);
   int doSomethingElse(String s);
   boolean didItWork(int i, double x, String s);

}

```

如果进行此更改，则实现旧`DoIt`接口的所有类都将中断，因为它们不再实现旧接口。依赖此接口的程序员将大声抗议。

尝试预测接口的所有用途，并从头开始完全指定。如果要向接口添加其他方法，可以使用多个选项。您可以创建扩展`DoIt`的`DoItPlus`接口：

```
public interface DoItPlus extends DoIt {

   boolean didItWork(int i, double x, String s);

}

```

现在，您的代码用户可以选择继续使用旧接口或升级到新接口。

或者，您可以将新方法定义为[默认方法](../../java/IandI/defaultmethods.html)。以下示例定义名为`didItWork`的默认方法：

```
public interface DoIt {

   void doSomething(int i, double x);
   int doSomethingElse(String s);
   default boolean didItWork(int i, double x, String s) {
       // Method body 
   }

}

```

请注意，您必须提供默认方法的实现。您还可以为现有接口定义新的[静态方法](../../java/IandI/defaultmethods.html#static)。具有实现使用新的默认或静态方法增强的接口的类的用户不必修改或重新编译它们以适应其他方法。