相同点:
- 都不能被实例化。
不同点:
- 接口:
a.接口能被子接口和实体类、抽象类继承
b.一个实体类或接口可以继承多个接口
c.抽象类可以继承接口,比如java.util中的AbstractCollection类就是实现的Collection接口
d.实体类实现接口必须实现其所有方法。 - 抽象类:
a.抽象类只能作为超父类
b.抽象类的子类可以是实体类也可以是抽象类
c.子类是抽象类可以不实现其方法
d.子类是实体类必须实现其方法
使用场景:
如果有一些方法并且想让它们中的一些有默认实现,那么使用抽象类; 如果需要实现多重继承,那么必须使用接口。