【java基础】接口中的默认方法

Java8的接口现在可以实现方法了。默认方法(带default修饰的方法)的好处是可以为接口添加新的默认方法,而不会破坏接口的实现。
——————————————————————————————————————————
这样任何一个实现了带有默认方法接口的类都会自动继承默认方法实现,无需再写直接留白

interface Iterator<T>{//Iterator接口就为remove方法提供了一个默认实现
    boolean hasNext();
    T next();
    default void remove(){
        throw new UnsupportedOerationException();
    }
}
//可能是早期包中的例子:
@FunctionalInterface
public interface Iterable<T> {
    Iterator<T> iterator();

    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }
}

经验或者说规则:

1.当继承的父类和实现的接口中有相同的方法时,优先使用父类的方法。
——————————————————————————————————————————
2.当接口的父接口中也有同样的默认方法时,就近原则调用子接口的方法。
——————————————————————————————————————————
3.当实现的多个接口中有相同签名的方法时,必须在实现类中通过重写方法解决冲突问题,否者无法通过编译,在重写的方法中可以通过 接口名.super.方法名(); 的方式显示调用需要的方法。

@Override
    public void methods() {
        B.super.methods();//这样指明调用
    }

默认表达式的主要目标是使标准JDK接口得以进化,并且当我们最终开始使用Java 8的lambdas表达式时,提供给我们一个平滑的过渡体验。

感谢分享:罗罗的奇幻之旅 java8接口中的默认方法

lwei 翻译的:Java 8 详解之默认方法 【已翻译100%】

fool77 的 关于java8接口中默认方法的使用 例子小但是说明问题

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值