# 定义接口

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

接口声明由修饰符，关键字`interface`，接口名称，逗号分隔的父接口列表（如果有）和接口主体组成。例如：

```
public interface GroupedInterface extends Interface1, Interface2, Interface3 {

    // constant declarations

    // base of natural logarithms
    double E = 2.718282;

    // method signatures
    void doSomething (int i, double x);
    int doSomethingElse(String s);
}

```

`public`访问说明符表示该接口可以被任何包中的任何类使用。如果未指定接口是公共接口，则只能在与接口相同的程序包中定义的类上访问您的接口。

接口可以扩展其他接口，就像类子类或扩展另一个类一样。但是，虽然类只能扩展另一个类，但接口可以扩展任意数量的接口。接口声明包括它扩展的所有接口的逗号分隔列表。

## 界面体

界面体可以包含[抽象方法](../../java/IandI/abstract.html)，[默认方法](../../java/IandI/defaultmethods.html)和[静态方法](../../java/IandI/defaultmethods.html#static)。接口中的抽象方法后跟分号，但没有大括号（抽象方法不包含实现）。默认方法使用`default`修饰符定义，静态方法使用`static`关键字定义。接口中的所有抽象，默认和静态方法都是隐式`public`，因此您可以省略`public`修饰符。

此外，接口可以包含常量声明。接口中定义的所有常量值都隐含`public`，`static`和`final`。再一次，您可以省略这些修饰符。