但是java8里面的函数式编程包function下面的接口,里面都有默认实现。
我还是觉得,还是分开比较好。接口和抽象类严格区分开。
很早之前我还提问:为什么接口的名称不可以从名字上来区分开呢:
比如在普通类名后面加个Intf。抽象类=普通类名+Abs。这样直观,层级分明。
至于为什么没有这么做呢?应该是为了兼容。但是我们自己的项目其实是可以这么做的。
刚才看了下为什么会出现呢?
这么做的原因是:由于Collection库需要为批处理操作添加新的方法,如forEach(),stream()等,但是不能修改现有的Collection接口——如果那样做的话所有的实现类都要进行修改,包括很多客户自制的实现类。所以只好使用这种妥协的办法。也就是为了兼容。