• java接口的default方法和 static方法


    default

    当一个接口要添加一些新的公共逻辑,写了一个新的方法,那么所有的实现类都需要重写新方法,如果实现类太多,会非常麻烦。
    这时可以使用 default。

    • 接口中的default方法,可以写方法内容。
    • 接口中的default方法不强制实现类重写,不会影响到已有的实现类。
    • 接口的实现类,可以调用接口中的default方法。

    static

    • 接口中的static方法,可以写方法内容。
    • 接口中的static方法不允许实现类重写(如果重写方法加上@Override会报错),不会影响到已有的实现类。
    • 接口中的static方法,可以直接通过接口名称调用。

    示例:

    • OrderService 接口.
    public interface OrderService {
        /**
         * 接口中的变量都是 默认 public static final的,可以不用写这些修饰符
         */
        String NAME = "static";
    
        /**
         * static方法,可以直接通过接口名称调用 static方法。
         * 比如 OrderService.selectName();
         *
         */
        static String selectStatic() {
            return NAME;
        }
    
        /**
         * default方法,可以写方法内容,实现类不强制重写 default方法。
         *
         */
        default String selectDefault() {
            return "default";
        }
    
        String selectOrder();
    
    }
    
    • 接口实现类:
    public class OrderServiceImpl implements OrderService {
    
        @Override
        public String selectOrder() {
            return "order";
        }
    
    }
    
    
    • 测试:
    public class InterfaceTest {
    
        public static void main(String[] args) {
            OrderServiceImpl orderServiceImpl = new OrderServiceImpl();
            //接口的实现类,可以调用接口中的default方法
            String user = orderServiceImpl.selectDefault();
            System.out.println("selectDefault()结果为:"+user);
    
            //static方法,可以直接通过接口名称调用,无需实例化
            String name = OrderService.selectStatic();
            System.out.println("OrderService.selectStatic()结果为:"+ name);
        }
    }
    
  • 相关阅读:
    CD4051
    sbit和sfr的定义
    EEPROM与FLASH的区别
    九LWIP学习笔记之最后的战役
    八LWIP学习笔记之用户编程接口(NETCONN)
    七LWIP学习笔记之传输控制协议(TCP)
    六LWIP学习笔记之用户数据报协议(UDP)
    java实现二叉查找树
    线程的锁对象
    MAP
  • 原文地址:https://www.cnblogs.com/expiator/p/16162890.html
Copyright © 2020-2023  润新知