接口

111 阅读1分钟

接口与类是两个并行的概念

接口与抽象类的异同

接口强调 "能" 做什么,你要做什么,你就要遵守接口的规范

类只能单继承,接口可以实现多继承

注意点:

  • 接口中不能定义构造器,意味着接口不能被实例化
  1. JDK 7
  • 接口中只能定义 全局常量抽象方法
interface Flyable {
    public static final int MAX_SPEED = 20; // 全局常量
    int MIN_SPEED = 1; // 可以省略 public static final
    
    // 抽象方法
    public abstract void fly();
    void stop(); // 可省略public abstract
}
  • 接口可以让类通过 implements 实现接口,必须要实现接口的所有抽象方法,否则此类是抽象类
class Plane implements Flyable {
    @Override
    public void fly() {
        
    }
}

abstract class Plane1 implements Flyable {

}
  • 接口可以多继承
interface Attackable {}

class Bullet implements Flyable, Attackable {}
  • 继承和实现接口并存写法,先写继承,再写接口的实现
class A extends B implements C, D {}
  • 接口与接口之间可以继承,且能多继承
interface A {}
interface B {}
interface C extends A, B {}
  1. JDK 8
    还可以定义静态方法和默认方法
interface CompareB {
    public static void method1() {
        System.out.println("static method");
    }

    default void method2() { // public可省略
        System.out.println("default method");
    }

    default void method3() {
        System.out.println("default method3BBB");
    }
}