zoukankan      html  css  js  c++  java
  • 默认方法

      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();  
      }
    }
  • 相关阅读:
    Java调用CMD命令
    java在线截图---通过指定的URL对网站截图
    【好的技术员网站】蓝飞技术部落格==蓝飞技术部落格==蓝飞技术部落格
    事务管理最佳实践全面解析
    Javascript摸拟自由落体与上抛运动 说明!
    dwz中给表单项获取,设置值
    jquery操作select(取值,设置选中)[转]
    Flex 笔记整理 三
    Myeclipse 工具优化 [内存一直增加, jsp,javascript 编辑很卡]
    Spring: 读取 .properties 文件地址,json转java对象,el使用java类方法相关 (十三)
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/7215525.html
Copyright © 2011-2022 走看看