在Java8之前,定义在接口中的所有方法都需要在接口实现类中提供一个实现,如果接口的提供者需要升级接口,添加新的方法,那么所有的实现类都需要把这个新增的方法实现一遍,如果说所有的实现类能够自己控制的话,那么还能接受,但是现实情况是实现类可能不受自己控制。比如说Java中的集合框架中的List接口添加一个方法,那么Apache Commons这种框架就会很难受,必须修改所有实现了List的实现类向已经发布的接口中添加新的方法是问题的根源,一旦接口发生变化,接口的实现者都需要更新代码,实现新增的接口在Java8以后这些类都被标注成了过期@Deprecated为了解决上述问题,在Java8中允许指定接口做默认实现,未指定的接口由实现类去实现。

Java8中的默认方法(面试者必看)

Java8中的默认方法(面试者必看)

Java8中的默认方法(面试者必看)

Java8中的默认方法(面试者必看)

Java8中的默认方法(面试者必看)