以前一直没有用过Java
8中的新特性,现在在项目中看到同事的代码用到了,顺便学习一下。具体是用在接口Interface中的,之前咱们对于接口的了解是这样的,接口中只能定义方法,不能去实现方法,相当于接口只做声明,不做实现,一定程度上体现Java的抽象性。
写个代码演示一下:
接口SimpleInterface:
接口的实现类SimpleInterfaceImpl:
运行结果输出: 做一些事情1
现在有一个需求就是需要在接口SimpleInterface中增加一个方法doSomeOtherWork(),那么代码就变成下面这样了:
我们知道接口的实现类是一定要实现接口中所有的方法的,所以此时实现类报错了,如下:
现在我们只有在实现类中去实现doSomeOtherWork(
)才可以使程序正常运行,但是我们知道在项目中修改代码是最不好的事情。为什么有那么多的框架?不就是让我们尽量不去修改源代码吗?讲究的是解耦合。所以现在如何能在不修改实现类代码的情况下去让程序正常运行?于是Java
8中的default出现了,从字面意思就可以理解它是默认的意思,就是在接口中把doSomeOtherWork(
)定义成default,然后直接在接口中去实现它的方法体,现在已经打破我们所知的接口中不能实现方法的老的认知了。
现在代码已经变成这样了:
现在实现类中默认已经实现了doSomeOtherWork( )了,可以直接调用doSomeOtherWork( )了。
运行结果是:做一些事情1
做一些事情2