抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情
一、语法上的区别:
1、抽象类修饰符是abstract 接口修饰符是interface
2、抽象类中可有成员属性、普通方法、构造方法,接口中所有方法必须是抽象的
3、抽象类中的抽象方法的访问类型可以是public、protected和默认类型(但是默认类型在eclipse下是报错的),接口中的抽象方法只能是public类型
4、一个类可以实现多个接口,但只能继承一个抽象类
二、设计理念上区别
1、接口会降低类之间的耦合度,抽象类会增加类之间的耦合度
接口没有构造方法,所以不能实例化,抽象类有构造方法,但是不是用来实例化的,是用来初始化的。
