java接口中的default修饰符(jdk1.8)

作用

接口中被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());
    }
}

输出结果
在这里插入图片描述


版权声明:本文为yogning原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。