Java8及以上新版本,允许给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做默认方法(也称为扩展方法)。
默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法不是。作为替代方式,接口可以提供默认方法的实现,所有这个接口的实现类都可以自动得到这个接口默认方法。
示例代码:
package testInterface;
public interface testDefault {
void printInfo();//接口中一般的抽象方法
default void moren(){ //接中定义的默认方法
System.out.println("测试默认方法");
}
}
class TestDefaultImpl01 implements testDefault{
@Override
public void printInfo() {//只要求重写了接口中的抽象方法,默认方不需重写,当然一定要重写也是可以的
System.out.println("TestDefaultImpl01.printInfo");
}
}
上面的代码这样定义后,接口testDefault的实现类TestDefaultImpl01的对象td,就可以不仅使用重写的方法,也可以直接使用默认方法。虽然在实例类中,并没有写默认方法,如下:
testDefault td = new TestDefaultImpl01(); td.printInfo(); td.moren();