Java8新特性之:默认方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8新特性之:默认方法相关的知识,希望对你有一定的参考价值。

一. 默认方法

    1.默认方法的使用模式:

        -- 可选方法

            类实现了接口,但是刻意地将一些方法留白。

public interface Iterator<E> {
    boolean hasNext();
    E next();
    default void remove() {
        throw new UnsupportedOperationException("remove");
    }
}


        -- 行为的多继承

            让类从多个来源重用代码。

            -- 继承多个接口;

            -- 利用正交方法的精简接口:

public interface Resizable {
    int getWidth();
    int getHeight();
    void setWidth(int width);
    void setHeight(int height);
    void setAbsoluteSize(int width, int height);
    default void setRelativeSize(int wFactor, int hFactor) {
        setAbsoluteSize(getWidth() / wFactor, getHeight() / hFactor);
    }
}


    2.解决冲突的规则

        冲突的场景:一个类实现了多个接口和父类的方法而它们使用的却是同样的函数签名。

        规则:

            (1)类中的方法优先级最高。类或父类中声明的方法优先级高于任何声明为默认方法的优先级。

            (2)如果无法依据第一条进行判断,那么子接口的优先级更高:函数签名相同时,优先级选择拥有最具体实现的默认方法的接口,如果B继承了A,那么B就比A更具体。

            (3)最后,如果还是无法判断,继承了多个接口的类必须通过显式覆盖和调用期望的方法,显式地选择使用哪一个默认方法的实现。(X.super().method(...))


以上是关于Java8新特性之:默认方法的主要内容,如果未能解决你的问题,请参考以下文章

Java 8 新特性总结

Java8新特征之接口默认方法

乐字节-Java8新特性-接口默认方法之Stream流(下)

Java8新特性之接口的默认方法和静态方法

Java8新特性之接口的默认方法和静态方法

Java8中你可能不知道的一些地方之接口默认方法实战