Java8 接口默认方法和静态方法

作者: 聪明的奇瑞 | 来源:发表于2018-01-26 17:38 被阅读107次
    • 在 Java8 之前接口变量必须是 public、static、final 修饰的,方法必须是 public、abstract 的
    • 但Java8 扩展了接口的定义,添加了默认方法(default)和静态方法,默认方法使得接口也可以有实现,该接口实现类可以不实现默认方法
    interface Foo1 {
        default String Hello(String name){
            return "Hello "+name;
        };
    }
    
    • 静态方法只能通过接口名调用,不能通过实现类调用,实现类也无需实现该方法,其它接口继承该接口时也不继承静态方法
    interface Foo1 {
        static void sayHello(){
            System.out.println("Hello");
        }
    }
    Foo1.sayHello();
    
    • 如果一个接口多继承了两个接口,这两个接口包含了完全相同的静态方法,这种情况下不会报错,因为接口静态方法只能由该接口调用,如果这两个接口有相同的默认方法,则会报错,需要重写默认方法
    • 默认方法静态方法可以在不打破原有继承体系上改进接口,如官方库中给 Collection 接口增加了 stream()、forEach()方法

    相关文章

      网友评论

        本文标题:Java8 接口默认方法和静态方法

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