接口与类是两个并行的概念
接口与抽象类的异同
接口强调 "能" 做什么,你要做什么,你就要遵守接口的规范
类只能单继承,接口可以实现多继承
注意点:
- 接口中不能定义构造器,意味着接口不能被实例化
- 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 {}
- 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");
}
}