美文网首页
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