接口和抽象类的区别
相同点:1):都位于继承的顶端,用于被其他实现或继承
2):都不能实例化
3):都可以定义抽象方法,其子类/实现类必须覆写这些抽象方法
不同点:1):接口没有构造方法,抽象类有构造方法
2):抽象类可包含普通方法和抽象方法,接口只能包含抽象方法(Java8之前)
3):一个类只能继承一个直接父类(可能是抽象类),接口是 多继承的并且只支持一个类实现多个接口( 接口弥补了Java的单继承)
4):成员变量:接口里默认是public static final,抽象类是默认包访问权限
5):方法:接口里默认是public abstract,抽象类默认是包访问权限
6):内部类:接口里默认是public static,抽象类默认是包访问权限l
----------------------------若接口和实现类可以完成相同的功能,尽量使用接口,面向接口编程
设计模式:接口和抽象类集合使用的(适配器模式)