Java 接口

接口

在 Java 中实现抽象的另一种方法是使用接口。

interface 是一种完全“抽象类”,用于组合相关方法与空主体:

实例

// 接口:
interface Animal {
  public void animalSound(); // 接口方法(没有主体)
  public void run(); // 接口方法(没有主体)
}

如需访问接口方法,接口必须由另一个类使用 implements 关键字(而不是 extends)来“实现”(有点像继承)。

接口方法的主体由 "implement" 类提供:

实例

// 接口:
interface Animal {
  public void animalSound(); // 接口方法(没有主体)
  public void sleep(); // 接口方法(没有主体)
}

// Pig “实现”了 Animal 接口:
class Pig implements Animal {
  public void animalSound() {
    // 此处提供了 animalSound() 的主体
    System.out.println("The pig says: wee wee");
  }
  public void sleep() {
    // 此处提供了 sleep() 的主体
    System.out.println("Zzz");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig();  // 创建 Pig 对象
    myPig.animalSound();
    myPig.sleep();
  }
}

亲自试一试

接口注意事项:

  • 抽象类一样,接口不能用于创建对象(在上面的例子中,不可能在 MyMainClass 中创建 "Animal" 对象)
  • 接口方法没有主体 - 主体由 "implement" 类提供
  • 在实现接口时,您必须覆盖其所有方法
  • 接口方法默认是 abstractpublic
  • 接口属性默认为 publicstaticfinal
  • 接口不能包含构造函数(因为它不能用于创建对象)

为什么以及何时使用接口?

1)为了实现安全 - 隐藏某些细节,只显示一个对象(接口)的重要细节。

2)Java 不支持“多重继承”(一个类只能从一个超类继承)。但是,它可以通过接口来实现,因为类可以实现多个接口。

注释:如需实现多个接口,用逗号分隔它们(请见下面的例子)。

多个接口

要实现多个接口,请用逗号分隔它们:

实例

interface FirstInterface {
  public void myMethod(); // 接口方法
}

interface SecondInterface {
  public void myOtherMethod(); // 接口方法
}

class DemoClass implements FirstInterface, SecondInterface {
  public void myMethod() {
    System.out.println("Some text..");
  }
  public void myOtherMethod() {
    System.out.println("Some other text...");
  }
}

class Main {
  public static void main(String[] args) {
    DemoClass myObj = new DemoClass();
    myObj.myMethod();
    myObj.myOtherMethod();
  }
}

亲自试一试