抽象类除了有抽象方法,还可以有普通成员方法,接口中只能有public abstract修饰的方法。
抽象类只能单继承,接口可以多实现。抽象类中的成员方法可以是各种修饰符修饰的,而接口只能是public static final修饰的(默认)。
接口的设计目的是:对类的行为进行约束,也就是这个类有什么方法,接口不管具体方法是如何实现。
抽象类的设计目的是:代码的复用,必须存在继承关系。当不同的类具有相同的功能时,可以派生一个抽象类具有这些方法,这些类去继承这个抽象类(子类的共性派生为一个父类),达到代码的重复使用。抽象类不允许实例化,因为抽象类里面有没有实现的方法。
抽象类是对类本质是抽象,包含并实现子类的通用特性,将子类存在差异话的特性进行抽象,交给子类实现。
接口的核心是定义行为,即实现类可以做什么,至于如何实现,实现的主题是谁,接口不关心。
使用场景:抽象类关注的是一个事务的本质,接口关注操作。