接口.super 的用法

原理不明,但是实操就是如下现象

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版简易计算器

猜你喜欢

转载自blog.csdn.net/weixin_37646636/article/details/120753549