美文网首页
Java8 接口的默认方法

Java8 接口的默认方法

作者: Tinyspot | 来源:发表于2022-08-21 08:14 被阅读0次

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();
}

相关文章

网友评论

      本文标题:Java8 接口的默认方法

      本文链接:https://www.haomeiwen.com/subject/ejizvrtx.html