Java基础(接口的默认方法定义及使用)

Java 8 引入了接口的默认方法,允许在接口中定义带有实现的函数,以解决接口升级的问题。这些默认方法会在实现类中被继承,并在存在冲突时可通过重写进行处理。调用接口的默认方法可以直接通过接口实现类的对象完成,也可由实现类覆盖并提供新的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从Java 8 开始,接口里允许定义默认方法。
格式:
public default 返回值类型 方法名称(参数列表) {
方法体
}

备注:接口当中的默认方法,可以解决接口升级的问题。
默认方法会被实现方法继承下来

调用默认方法时,如果实现类当中没有,会向上找接口

1.接口的默认方法,可以通过接口实现类对象,直接调用。
2.接口的默认方法,也可以被接口实现类进行覆盖重写。

例如:

package 接口;

import java.sql.SQLOutput;

public class Democ01 {
    public static void main(String[] args) {

            // 创建了实现类对象
            MyInterfaceDefaultA a = new MyInterfaceDefaultA();
            a.methodAbs(); // 调用抽象方法,实际运行的是右侧实现类。

            // 调用默认方法,如果实现类当中没有,会向上找接口
            a.methodDefault();  // 这是新添加的默认方法
            System.out.println("================");

            MyInterfaceDefaultB b = new MyInterfaceDefaultB();
            b.methodAbs();
            b.methodDefault(); // 实现类B覆盖重写了接口的默认方法
    }


}
package 接口;

public interface MyInterfaceDefault {
    // 抽象方法
    public abstract void methodAbs();

    //新添加了一个抽象方法
//    public abstract void methodAbs2();

    // 新添加的方法,改成默认方法
    public default void methodDefault(){
        System.out.println("这是新添加的默认方法");
    }
}
package 接口;

public class MyInterfaceDefaultA implements MyInterfaceDefault{
    @Override
    public void methodAbs() {
        System.out.println("实现了抽象方法AAA");
    }
}
package 接口;

public class MyInterfaceDefaultB implements MyInterfaceDefault{

    @Override
    public void methodAbs() {
        System.out.println("实现了抽象方法BBB");
    }

    @Override
    public void methodDefault() {
        System.out.println("实现类B覆盖重写了接口的默认方法");
    }
}

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值