zoukankan      html  css  js  c++  java
  • 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

    自我控制是最强者的本能-萧伯纳
  • 相关阅读:
    React 框架 | 深入剖析 Scheduler 原理 广东靓仔
    Spool and Print [转]
    Excel表中的文本格式与数字格式转换方法(转)
    什么叫网关的精解(超经典)(zt)
    如何在公司局域网内部上网使用代理服务器突破网关(zt)
    百鸟之王
    两种修改网卡物理地址的秘笈
    MAC地址作用以及原理(ZT)
    js 通过后台接口返回的URL地址下载文件并保存到本地(已在项目中使用,保存音视频文件)
    DataTable中数据记录的统计
  • 原文地址:https://www.cnblogs.com/CF1314/p/14431931.html
Copyright © 2011-2022 走看看