JDK8 interface 改动
1、interface中可以定义static方法;
2、interfac中的static方法必须有方法实现体,该方法只属于该接口,接口名直接调用该方法。不属于子类或子接口,子类或实现对象都无法继承、重写、调用该方法;
3、接口中新增default关键字修饰的方法,default方法只能定义在接口中,可以再子类或子接口中被重写;
4、接口中default定义的方法必须有方法体;
5、default方法可以被子接口或子类 继承、重写、被子类对象调用。不能像static方法一样,被接口名直接调用;
6、父接口的default方法如果在子接口或子类被重写,那么子接口实现对象、子类对象,调用该方法,以重写为准;
7、本类、接口如果没有重写父类的default方法,则在调用default方法时,使用父类定义的default方法逻辑;
8、子类、子接口如果实现或继承多个接口,父接口中有同样的default方法,则子类、子接口必须重写该default接口,并以自己的重写方法为准;
在接口中,增加default方法, 是为了既有的成千上万的Java类库的类增加新的功能, 且不必对这些类重新进行设计。 比如, 只需在Collection接口中
增加default Streamstream(), 相应的Set和List接口以及它们的子类都包含此的方法, 不必为每个子类都重新copy这个方法。