继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java8新特性之:默认方法

慕婉清0083722
关注TA
已关注
手记 322
粉丝 72
获赞 277

一. 默认方法

    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(...))


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP