1、抽象类可以包含部分方法的实现,这是抽象类优于接口的一个主要地方。 2、由于Java的单继承,每个类只能从一个抽象类继承,但是每个类可以实现多个接口,使用接口还可以实现Mixin混合类型的类。接口可以继承多个接口,即接口间可以多重继承。 3、将类抽取出通用部分作为接口容易,要作为抽象类则不太方便,因为这个类有可能已经继承自另一个类。 4、可以将接口和抽象类一起使用。在集合框架体系中,顶层接口Collection定义了一些方法,同时又提供了几个抽象类 AbstractCollection、AbstractList、AbstractMap实现了一些方法,这样具体的集合实现类可以选择从抽象类中继承或直接实现接口。