抽象类
- 抽象类和抽象方法用abstract修饰,含有抽象方法的类是抽象类,抽象类不一定含有抽象方法
- 抽象方法必须为public或protected,如果是private将不能被继承
- 抽象类不能用来创建对象
- 如果一个类继承抽象类,则子类必须实现父类的抽象方法,如果没有实现,则必须将子类也定义为抽象类
接口
- 接口泛指供别人调用的方法或者函数,是对行为的抽象
- 接口可以由变量和方法,变量只能是public static final 变量,方法只能是public abstract方法
- 接口中的方法都是抽象方法,比抽象类更“抽象”
区别
- 一个类只能继承一个抽象类,可以实现多个接口
- 一个类实现接口必须实现接口的所有方法,而抽象类不需要
- 设计层面来说,抽象类是一种模板式设计,接口是行为规范,是一种辐射式设计,可以理解为,抽象类如果需要添加新的方法在抽象类中实现就行,不用每个子类都实现,而接口改变,所有实现接口的类都必须做相同的改变
- 接口的方法默认是public,所有方法不能由具体实现,抽象类可以有普通方法
- 接口中变量默认是final类型,抽象类不一定
- 接口不能用new实例化,但可以声明,必须引用一个实现该接口的对象
接口和抽象类的区别
原文:https://www.cnblogs.com/codingLiu/p/12686335.html