Interface 中 的 default 方法、static方法

 


Interface 中 的 default 方法、static方法

偶然间看到 interface 接口中有 default、static 关键字修饰的方法。

来源

在 JDK1.8 时,接口中添加了 default 关键字和 static 关键字修饰的方法。defalut 修饰的方法标注为普通方法,子类无需进行实现。

static 修饰的方法标注为静态用法,跟平常的静态用法一样

1、default 基本用法

1.1 当只有一个接口,实现类无需重写 default 方法

接口 InterfaceA有 default 方法

复制public interface InterfaceA {
    public default String getName() {
        return "名字为:InterfaceA";
    }
}

DefaultTest 实现 InterfaceA

public class DefaultTest implements InterfaceA {
}

可以注意到没有实现类没有重写 getName() 方法。

进行测试,可以直接调用InterfaceA 的 default 方法

public static void main(String[] args) {
    DefaultTest test = new DefaultTest();
    System.out.println(test.getName());
}

输出结果:

名字为:InterfaceA

1.2 当多个接口拥有相同名称 default 方法, 实现类必须重写 default 方法

现在 类DefaultTest同时实现 InterfaceAInterfaceB且两个接口都有相同名称的 default 方法。

image-20210222114802168

1.3 当继承的父类与实现的接口拥有相同名称的方法(接口中 default 修饰),调用的是父类的方法。

DefaultTest继承于ParentTest,实现InterfaceA,但ParentTest同样有getName()方法。

public class ParentTest {
    public String getName() {
        return "名字为:ParentTest";
    }
}

DefaultTest如下:

public class DefaultTest extends ParentTest implements InterfaceA {
}

进行测试:

public static void main(String[] args) {
    DefaultTest test = new DefaultTest();
    System.out.println(test.getName());
}

根据输出结果可以知道,调用的是父类的方法

名字为:ParentTest

2、static 基本用法

在接口中,static 关键字修饰的方法为静态方法,与其他静态方法的应用并没有差别

public interface InterfaceA {
    static String getName() {
        return "名字为:InterfaceA";
    }
}

通过接口名.方法名()直接调用

public static void main(String[] args) {
    DefaultTest test = new DefaultTest();
    System.out.println(InterfaceA.getName());
}

default 与 static 更加拓展了接口的功能,让接口的灵活性更上一层楼。

参考博客:https://blog.csdn.net/wf13265/article/details/79363522

posted @   MyDistance  阅读(1828)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示

目录导航

Interface 中 的 default 方法、static方法
来源
1、default 基本用法
1.1 当只有一个接口,实现类无需重写 default 方法
1.2 当多个接口拥有相同名称 default 方法, 实现类必须重写 default 方法
1.3 当继承的父类与实现的接口拥有相同名称的方法(接口中 default 修饰),调用的是父类的方法。
2、static 基本用法