作用
接口中被default修饰的方法有默认实现。
实现该接口的类可以不重写接口中被default修饰的方法。
接口:IDefault
public interface IDefault {
int testA();
//使用default修饰
default int testB(){
return 123;
};
}
实现类:Test
public class Test implements IDefault {
@Override
public int testA() {
return 5;
}
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.testA());
System.out.println(test.testB());
}
}
输出结果
业务背景
在接口中新增一个方法,如果该接口有多个实现类,就要在多个实现类中重写该方法,如果使用default修饰就可以避免该操作。
注意事项
当一个类实现多个接口,且接口中被default修饰方法相同时,必须重写该方法。
方法相同:方法名、参数、返回类型都相同。
方法名、参数相同而返回类型不同的接口不能用同一个类实现。
接口2:IDefault2
public interface IDefault2 {
default int testB(){
return 321;
}
}
实现类:Test
public class Test implements IDefault , IDefault2 {
@Override
public int testA() {
return 5;
}
@Override
public int testB() {
return 123321;
}
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.testA());
System.out.println(test.testB());
}
}
输出结果