• Java 接口 新特性(Java8)


      Java8新特性之接口增强

      在Java7以及以前的版本中,接口里的方法都是抽象的,并且不存在静态方法,属性默认修饰符是public static final。所有方法的声明都是public [返回类型] [方法名](参数列表) [throws 异常列表]。

      Java8定义的接口属性:only public, static & final are permitted.

      Java8定义的接口方法:Only public, abstract, default, static and strictfp are permitted.

      Java8定义的接口方法有2种具体实现类型,分别如下:

      1 static

      可以有静态方法:public static  [返回类型] [方法名](参数列表) [throws 异常列表]

      Java中可以实现多个接口,如果2个接口存在相同方法名和相同参数列表的静态方法(即方法签名相同),那么[子类.父类静态方法]不知道调用哪一个。因此,不允许使用[子类.父类静态方法],只能通过父类名来调用静态方法,解决了冲突问题。

      public class CImpl implements InterA, InterB

      其中,InterA和InterB存在同名静态方法,子类也可以存在方法签名相同的方法,但是不能用override修饰,因为静态方法不能被重写。

      通过接口名来调用static类型的方法。

      2 default

      方法可以有默认实现:

      public default void defaultMethod(){}  (default不能省略,只能修饰接口中的默认方法)

      子类重写接口默认方法时,必须去掉default。

    @Override
    public void defaultMethod(){
        System.out.println("子类A中的默认方法,必须去掉default修饰符");
    }

      定义一个类实现该接口,通过该类的实例来调用default类型的方法。

     

      优点

      1 避免子类代码重复

      当多个类实现一个接口的某个方法时,如果方法的具体实现代码相同,那么就会造成代码重复问题。接口增强相当于把公共的代码提取出来,放入接口定义中,实现类不需要重写该方法,解决了实现该接口的子类代码重复的问题。

      2 克服单继承的缺陷

      接口中可以定义static或default类型这两种有具体实现的方法,减少了接口和抽象类之间的区别。对于子类而言,抽象类只能单继承,接口可以实现多个。

     

      参考资料

      jdk1.8新特性-接口

      JDK8新特性之接口总结

      java8之接口增强

  • 相关阅读:
    分布式
    pytest+allure+jenkins
    Pytest-参数化和unittest-ddt的对比(两种数据驱动的对比)
    pytest- fixture个人理解总结
    os路径拼接时,比如os.path.join(base_dir,"Outputslogs")后半段斜杠请小心被识别为转义字符,所以请用/,因为windows都能识别到此路径。
    python中如何获取当前时间,并计算时间差
    Web UI自动化测试-滚动条操作
    java 基础 1.什么是Java?2.Java语言的特点?
    java 排序3 插入排序
    java 排序2 冒泡排序
  • 原文地址:https://www.cnblogs.com/WJQ2017/p/8359343.html
Copyright © 2020-2023  润新知