原理不明,但是实操就是如下现象
public interface IMathOperation {
default void print(){
System.out.println("这是数值运算基本接口。。。");
}
static void version(){
System.out.println("这是1.0版简易计算器");
}
public int add(int a,int b);
}
public class MathOperationImpl implements IMathOperation {
@Override
public int add(int a, int b) {
System.out.println("IMathOperation.class : " + IMathOperation.class);
System.out.println("IMathOperation.super.getClass() : " + IMathOperation.super.getClass());
// 子类中可以直接调用父类接口默认方法
IMathOperation.super.print();
// 调用父类静态默认方法
IMathOperation.version();
return a + b;
}
public static void main(String[] args) {
IMathOperation iMathOperation = new MathOperationImpl();
System.out.println(iMathOperation.add(1, 3));
// IMathOperation.super.print();//报错
// iMathOperation.super.print();//报错
// IMathOperation.print();//报错 default方法不能被类直接调用
iMathOperation.print(); // 对象可以调用default方法
IMathOperation.version();// 类可以调用static方法
// iMathOperation.version();//报错 static方法不能被对象调用
}
}
IMathOperation.class : interface java8_interface.IMathOperation
IMathOperation.super.getClass() : class java8_interface.MathOperationImpl
这是数值运算默认方法...
这是1.0版简易计算器
4
这是数值运算默认方法...
这是1.0版简易计算器