定义与语法
抽象类:使用abstract关键字定义,既能包含抽象方法(没有方法体的方法),也能包含具体方法(有方法体的方法)。一个类只能继承一个抽象类。
接口:使用interface关键字定义,接口中的方法默认是public abstract(公开抽象的),在 Java 8 之前,接口里只能有抽象方法,但从 Java 8 开始,接口可以有默认方法和静态方法。一个类能够实现多个接口。
继承和实现
抽象类:通过extends关键字来继承,一个类只能继承一个抽象类。继承抽象类的子类必须实现抽象类中的所有抽象方法,除非子类也是抽象类。
接口:通过implements关键字来实现,一个类可以实现多个接口。实现接口的类必须实现接口中的所有抽象方法(默认方法和静态方法除外)。
成员变量
抽象类:可以有各种访问修饰符(private、protected、public)的成员变量,并且可以有静态变量和实例变量。
接口:接口中的成员变量默认是public static final(公开静态常量),必须在声明时进行初始化,并且不能被修改。