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

    自我控制是最强者的本能-萧伯纳
  • 相关阅读:
    markdown 书写文档的框架
    使用snap
    如何让pandas表格直接转换为markdown表格
    我们需要怎样去写博客
    jupyter notebook 远程访问
    安装tensorflowGPU版本
    Data Science Project
    使用python处理地理数据:Geopandas
    python移植环境
    Jupyter notbook& REVEAL.JS& nbconvert 使用jupyter notebook制作slides
  • 原文地址:https://www.cnblogs.com/CF1314/p/14431931.html
Copyright © 2011-2022 走看看