在java8中
接口可以实现默认方法 ,使用default
关键字
class="java">
package com.dx;
public interface Caculate {
default int sum( int i,int k){
return i+k;
}
void sayHello(String msg);
}
当然实现接口的类可以选择实现或者不实现默认接口方法。
提问:为什么要新加入默认方法的特性呢?
假设一个场景,现在有一个接口,而且有很多实现类都实现了这个接口,如果要对这个接口添加新的方法,那么按照接口语义所有子类都必须实现这个方法,在很多大型的系统中这将是一场噩梦,谁知道将来或许又会添加新的改动,这是接口的一个弊端。当然你可能会问为什么不用抽象类呢?(不想回答)
现在Java新
版本的开发就遇到这么一个问题,List 接口中需要添加Stream API。这就会导致两个问题:a .Java版本变更需要满足向下兼容 b.需要修改所有List接口但实现类 。
所以接口默认方法特性主要是主要是为了方便类库设计人员,降低维护成本,增加接口的可
扩展性。