• Java8新特性_接口中的默认方法


    默认方法由来猜想

    1. Collection接口、Collections公共类。  同是操作集合,为啥要搞俩?没必要。在接口中搞一些默认实现,一个接口即搞定了。

    2. Java8支持Lambda表达式,需要函数式接口。而函数式接口只允许有一个方法的声明。而为了兼容7或之前的版本的Java,用default 声明成默认方法。既不影响它是一个方法声明的函数式接口,也不影响它有多个其它需求的方法,兼容Java之前版本的一些接口的声明。

    接口默认方法的类优先原则

    若一个接口中定义了一个默认方法,而另外一个父类或接口中又定义了另外一个同名方法时,

      1、选择父类中的方法。  如果一个父类提供了一个具体的实现,那么接口中具有相同名称和参数的默认方法会被忽略。

      2、接口冲突。  如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法是否是默认方法)那么必须覆盖改方法来解决冲突。

    public interface MyInterface01 {
    
        default void invoke() {
            System.out.println("MyInterface01");
        }
    
    }
    @FunctionalInterface
    public interface MyInterface02 {
    
        /**
         * 可以有默认的方法的实现
         */
        default void invoke() {
            System.out.println("MyInterface02");
        }
    
        /**
         * 可以有静态方法
         */
        static void show() {
            System.out.println("This is interface's static method show() ");
        }
    
        /**函数式接口的声明,only one*/
        void test();
    
    
    }
    public class FatherClass {
    
        void invoke() {
            System.out.println("FatherClass");
        }
    }
    public class MyFun extends FatherClass implements MyInterface01,MyInterface02{
    
    //    @Override
    //    public void invoke() {
    //        MyInterface01.super.invoke();
    //        MyInterface02.super.invoke();
    //    }
    
        @Override
        public void invoke() {
            super.invoke();
        }
    
        public static void main(String[] args) {
            MyFun fun = new MyFun();
            fun.invoke();
        }
    }
  • 相关阅读:
    Dapr Actor 的微服务架构
    社区 正式发布了跨平台的 CoreWCF 0.1.0 GA
    使用 Tye 辅助开发 dotnet 应用程序
    Dapr 交通流量控制示例
    Dapr是如何简化微服务的开发和部署
    牛年 dotnet云原生技术趋势
    Dapr 已在塔架就位 将发射新一代微服务
    Raden Blazor 组件以MIT 开源
    ASP Net Core – CORS 预检请求
    如何在 Blazor WebAssembly中 使用 功能开关
  • 原文地址:https://www.cnblogs.com/guchunchao/p/10324208.html
Copyright © 2020-2023  润新知