Java基础——Java8+新特性——接口的default方法

1.什么是默认方法?

  • 定义:Java 8 引入的接口特性,允许在接口中定义 有具体实现的方法(用 default 关键字修饰)。

  • 核心目的:在不破坏现有实现类的情况下,扩展接口的功能

  • 背景:Java 集合框架需要添加新方法(如 forEachstream),但直接修改接口会导致所有实现类必须重写新方法,默认方法解决了这一问题。

2.默认方法的语法

public interface MyInterface {
    // 抽象方法(无实现)
    void abstractMethod();

    // 默认方法(有实现)
    default void defaultMethod() {
        System.out.println("这是默认方法的实现");
    }
}

3. 默认方法的特点

  • 实现类无需重写:实现类可以直接继承默认方法的实现,也可以选择覆盖。

  • 接口多重继承:如果一个类实现了多个接口,且这些接口有 相同签名的默认方法,必须通过重写解决冲突。

  • 调用父接口默认方法:通过 接口名.super.默认方法名() 显式调用。

4. 默认方法的应用场景

  • 向后兼容:为旧接口添加新方法而不影响已有实现。

  • 提供通用功能:如Iterable<T>接口的 forEach 方法,继承来该接口的子接口以及子类都能用:

我们常见的集合List、Set、Queue、Deque接口等都是继承了该接口的,都能在具体实例化接口之后,直接使用foreach等在Iterator接口中通过default实现的默认方法。

5. 默认方法冲突解决

  • 规则:如果一个类实现了多个接口,且这些接口有相同的默认方法,必须重写该方法

interface A {
    default void foo() {
        System.out.println("A.foo");
    }
}

interface B {
    default void foo() {
        System.out.println("B.foo");
    }
}

class C implements A, B {
    // 必须重写 foo()
    @Override
    public void foo() {
        A.super.foo(); // 显式调用 A 的默认方法
    }
}

6.参考

Java 8 默认方法 | 菜鸟教程

......


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新停浊酒杯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值