区别一.关键字
抽象类的关键字为abstract class,接口的关键字为interface
区别二.成员变量
抽象类中可包含任意合法的成员变量,包括各种访问权限的类成员变量和对象成员变量
接口中的成员变量都是默认的public、static、final公开静态常量
区别三.构造方法
抽象类和接口都不能创建对象,但是抽象类含有无参构造方法,接口中没有构造方法也不能定义构造方法
区别四.方法
抽象类中可包含任意合法的方法,包括各种访问权限的、和除private外的非静态抽象方法
接口中在JDK7及以下版本中只能包含public且抽象的方法(public和abstract都是默认的),而JDK8开始还可以包含default和static修饰的非抽象方法
区别五.如何实现抽象方法
抽象类中的抽象方法是通过自定义类继承抽象类的方式实现的
接口中的抽象方法是通过自定义实现类implements接口来实现的,且实现类可以implements多个接口
区别六.是否存在多继承
抽象类也是类,所以遵循单继承,只能继承一个抽象或非抽象的类
而接口则可以继承多个接口