Java8 接口的默认方法

2022-08-21  本文已影响0人  Tinyspot

1. 接口默认方法的“类优先”原则

public class Parent {
    public String run() {
        return "parent...";
    }
}
public interface RunService {
    default String run() {
        return "runService...";
    }
}
public interface AnotherService {
    default String run() {
        return "AnotherService...";
    }
}

示例1:接口和父类默认方法相同时,执行父类的默认方法

public class RunDemo extends Parent implements RunService {
    public static void main(String[] args) {
        RunDemo runDemo = new RunDemo();
        System.out.println(runDemo.run()); // 输出:parent...
    }
}

示例2: 既继承父类又实现多接口,也是父类默认方法优先

public class RunDemo extends Parent implements RunService, AnotherService {
    RunDemo runDemo = new RunDemo();
    System.out.println(runDemo.run()); // 输出:parent...
}

示例3: 仅实现多接口,必须重写该默认方法

public class RunDemo implements RunService, AnotherService {
    public static void main(String[] args) {
        RunDemo runDemo = new RunDemo();
        System.out.println(runDemo.run());
    }

    // 必须重写
    @Override
    public String run() {
        // 自定义内容
        return "RunDemo...";

        // or 指定要使用的接口的默认方法
        // return AnotherService.super.run();
    }
}

2. 接口中的静态方法

public interface RunService {
    static void show() {
        System.out.println("this is static method");
    }
}
public static void main(String[] args) {
    RunService.show();
}
上一篇下一篇

猜你喜欢

热点阅读