普通类 --> 抽象类 --> 接口
可以理解为,抽象类是介于普通类和接口之间,帮助记忆。
①继承与实现:
普通类可以实现多个接口以及继承一个抽象类,java 的类的特性规定了,一个类只能继承一个父类以及实现多个接口;
实现接口,需要重新接口的所有方法,而继承抽象类,只需有选择性的进行重写;
一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。
②方法:
接口不允许存在私有方法,而抽象类允许:接口是专门提供给其它类使用的,不允许有私有方法,而抽象类则可以有私有方法;
接口不予许存在被实现的方法(普通方法),而抽象类允许。
③变量(数据成员):
接口只能拥有静态的不能被修改的变量(即 static final 类型),也即是常量,一般在接口中不定义变量,默认变量是public static final 类型;
抽象类可以有自己的变量,默认是 default 类型。
④初始化块与构造器:
接口不允许存在,抽象类允许存在。