• Java8学习笔记(四)--接口增强


    静态方法

    public interface InterfacePlus {
        void run();
        static Date createDate(){
            return new Date();
        }
    }

    默认方法

    public interface InterfacePlus {
        void run();
        default void sayHello()
        {
            System.out.println("Hello Java8!");
        }
    }

    Java8采用注解@FunctionalInterface来保证接口为函数接口,即接口中只显式声明一个抽象方法,新增的静态方法和默认方法是否会影响其成为一个函数接口呢,并不会,原因是:静态方法和默认方法均为非抽象方法!
    同理,复写父类的非抽象方法也不影响其成为一个函数接口,如复写equals方法,如下图所示:

    非抽象的方法实现,只需要使用 default 关键字即可,这个特征又叫做扩展方法。在实现该接口时,该默认扩展方法在子类上可以直接使用,它的使用方式类似于抽象类中非抽象成员方法。

    /*自行实现后可直接调用default方法*/
            //子类实例化
            InterfacePlusImpl interfacePlusImpl = new InterfacePlusImpl();
            interfacePlusImpl.sayHello();
            //Lambda实例化
            InterfacePlus interfacePlus = System.out::println;
            interfacePlus.sayHello();

    但扩展方法不能够重载 Object 中的方法。例如:toString、equals、 hashCode 不能在接口中被重载。

    岁月本长而忙者自促;天地本宽而卑者自隘;风花雪月本闲,而劳忧者自冗;天行健,君子以自强不息;地势坤,君子以厚德载物;宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒.不妄取,不妄予,不妄想,不妄求,与人方便,随遇而安
  • 相关阅读:
    Centos安装JIRA 7.13版本(自己在官方下载最新版)以及破解
    5. iphone 的:active样式
    4. css事件
    3. css百度制作字体图片
    8. react 常用组件
    3. JS生成32位随机数
    JS大小转化B KB MB GB的转化方法
    7.关于一些dom&&获取元素
    加密问题
    2.hover的使用
  • 原文地址:https://www.cnblogs.com/vvning/p/7659709.html
Copyright © 2020-2023  润新知