zoukankan      html  css  js  c++  java
  • 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之接口增强

  • 相关阅读:
    Android 按键消息处理Android 按键消息处理
    objcopy
    SQLite多线程读写实践及常见问题总结
    android动画坐标定义
    Android动画效果translate、scale、alpha、rotate
    Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
    Flatten Binary Tree to Linked List
    Distinct Subsequences
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/WJQ2017/p/8359343.html
Copyright © 2011-2022 走看看