• 默认方法


      Java程序的接口是将相关方法按照约定组合到一起的方式,实现接口的类必须为接口中定义的每个方法提供一个实现,或从父类中继承它的实现。

      Java8允许接口内声明静态方法,还引入了默认方法的功能。默认方法用default修饰。

      变更对Java程序的影响大体可以分成三种类型的兼容性:二进制级的兼容,源代码级的兼容以及函数行为的兼容。向接口中添加新方法是二进制级的兼容。二进制级的兼容表示现有的二进制执行文件能无缝持续链接。源代码级的兼容性表示引入变化后,现有的程序依然能成功编译通过。函数行为的兼容性表示变更发生后,程序接受同样的输入能得到同样的结果。

      

      接口包含的方法签名在它的实现类中也可以不提供实现。实际上,缺失的方法实现会作为接口的一部分由实现类继承,而无需由实现类提供。

      抽象类和抽象接口的区别

        一个类只能继承一个抽象类,但是一个类可以实现多个接口

        一个抽象类可以通过实例变量保存一个通用状态,而接口是不可以有实例变量的

      默认方法的两种应用场景:可选方法和行为的多继承。

        在Java8中,Iterator接口为remobe方法提供了一个默认的实现

     

      代理是创建一个类,通过该类的成员变量直接调用该类的方法。

      声明为final的类不能被其它的类继承。

      若一个类使用相同的函数签名从多个地方继承了方法,此时应按照如下规则:

        类或父类中显式声明的方法优先级最高

        若类或父类中没有声明方法,则提供最具体实现的默认方法的接口优先级最高

        若冲突依旧无法解决,则只能显示地指定在类中应使用哪个接口中的方法(Java引入了Class.super.method()方法调用父类接口中的方法)

    public interface A{
      default void hello(){
         System.out.println("Hello from A");
      }
    }
    
    public interface B{
      default void hello(){
        System.out.println("Hello from B")
      }
    }
    
    public class C implements B, A{
      void hello(){
        B.super.hello();  
      }
    }
  • 相关阅读:
    多层神经网络与C++实现
    反向传导算法的推导
    sizeof()和strlen()的区别与联系
    Pascal’s Triangle
    Multiply Strings
    spring boot 数据源 配置
    spring boot 静态资源。。
    spring boot 配置 beetl 视图解析器
    spring 使用junit
    spring aspectj 注解
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/7215525.html
Copyright © 2020-2023  润新知