为什么JDK8.0 之后允许接口定义静态方法和默认方法呢?

为什么JDK8.0 之后允许接口定义静态方法和默认方法呢?

因为它违反了接口作为一个抽象标准定义的概念。**

静态方法:因为之前的标准类库设计中,有很多Collection/Colletions或者Path/Paths这样成对的接口和类,后面的类中都是静态方法,而这些静态方法都是为前面的接口服务的,那么这样设计一对API,不如把静态方法直接定义到接口中使用和维护更方便。

默认方法:(1)我们要在已有的老版接口中提供新方法时,如果添加抽象方法,就会涉及到原来使用这些接口的类就会有问题,那么为了保持与旧版本代码的兼容性,只能允许在接口中定义默认方法实现。比如:Java8中对Collection、List、Comparator等接口提供了丰富的默认方法。(2)当我们接口的某个抽象方法,在很多实现类中的实现代码是一样的,此时将这个抽象方法设计为默认方法更为合适,那么实现类就可以选择重写,也可以选择不重写。

相关推荐

  1. JDK8接口新增的方法

    2024-03-18 01:00:04       59 阅读
  2. Kotlin(十二) 定义静态方法

    2024-03-18 01:00:04       55 阅读
  3. 使用静态方法接受对象参数

    2024-03-18 01:00:04       29 阅读
  4. Kotlin标准函数静态方法

    2024-03-18 01:00:04       31 阅读
  5. Android JNI 普通方法静态方法详解

    2024-03-18 01:00:04       47 阅读
  6. 【逆向】fridaAPI_如何hook一个静态方法实例方法

    2024-03-18 01:00:04       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 01:00:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 01:00:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 01:00:04       82 阅读
  4. Python语言-面向对象

    2024-03-18 01:00:04       91 阅读

热门阅读

  1. OpenWRT (LEDE) 镜像使用帮助

    2024-03-18 01:00:04       45 阅读
  2. 双向链表的实现

    2024-03-18 01:00:04       42 阅读
  3. python简单web框架介绍

    2024-03-18 01:00:04       43 阅读
  4. python--scrapy 保存数据到 mongodb

    2024-03-18 01:00:04       43 阅读
  5. FTP基本配置(vsftpd.conf)文件讲解

    2024-03-18 01:00:04       42 阅读
  6. 面试(持续更新)

    2024-03-18 01:00:04       36 阅读
  7. 删除链表中的指定元素

    2024-03-18 01:00:04       40 阅读
  8. reverse_iterator实现

    2024-03-18 01:00:04       31 阅读