静态方法
目前为止,通常的做法都是将静态方法放在伴随类中。在标准库中,你会看到成对出现的接口和使用工具类,如Collection/Collections或Path/Paths。在Java SE 8中,允许在接口中增加静态方法,节省一个伴随类,只是这有违于将接口作为抽象规范的初衷。示例如下:
默认方法
可以为接口方法提供一个默认实现。必须用default修饰符标记这样一个方法。
解决默认方法冲突
如果先在一个接口中将一个方法定义为默认方法,然后又在超类或另一个接口中定义了同样的方法,会发生什么情况?Java的相应规则如下:
1)超类优先。如果超类提供了一个具体方法,同名而且有相同参数类型的默认方法会被忽略。确保与Java SE 7兼容。
2)接口冲突。如果两个接口都提供了同名同参的默认方法,实现类必须覆盖这个方法类解决冲突。