当前位置: 首页 > news >正文

不同jdk版本中的接口规范

Java Development Kit(JDK)的每个版本通常会对 Java 语言和类库进行改进,接口规范也在不断演进。Java 接口的演变是逐步从 “纯粹抽象的定义” 向 “具有行为的抽象定义” 演化的。

      • JDK 1.0 和 JDK 1.1
      • JDK 1.2 到 JDK 1.6
      • JDK 1.8(Java 8)
      • JDK 9
      • JDK 17(Java 17)

JDK 1.0 和 JDK 1.1

  • 接口的引入: JDK 1.0 中首次引入了接口的概念,它是 Java 语言区别于 C++ 等其他语言的重要特性。接口用于定义一组抽象方法,这些方法必须在实现接口的类中得到实现。
  • 基本概念: 接口定义了一组不能带有实现体的抽象方法,所有这些方法都默认为publicabstract。接口还可以定义public static final类型的常量。

JDK 1.2 到 JDK 1.6

  • 接口作为 Java API的扩展方式: 在这些版本中,接口逐渐被大量使用来构建 Java API,例如java.util.Collection等接口被定义出来,以允许程序员在不同的类中共享行为特征。
  • 没有默认实现: 在这些版本中,接口中只能定义抽象方法,没有任何方法可以有实现。也就是说,接口只定义 “做什么”,实现类必须负责 “怎么做”。

JDK 1.8(Java 8)

Java 8 是 Java 语言中一个重要的里程碑版本,因为它引入了若干改变接口规范的新特性,使得接口在 Java 中的角色更加丰富和灵活。

  • 默认方法(Default Methods):

    • Java 8 允许在接口中定义 “默认方法”(default),也就是接口可以为某些方法提供默认的实现。
    • 这种方式的引入解决了接口扩展时的一个难题:在不破坏现有接口实现的情况下为接口新增功能。通过使用default关键字,接口中的一些方法可以有默认的实现,不强制所有实现类都实现该方法。例如:
      public interface MyInterface {default void defaultMethod() {System.out.println("This is a default method.");}
      }
      
    • 默认方法使得接口中的代码重用变得可能,同时减少了实现类的负担。
  • 静态方法(Static Methods):

    • Java 8 还允许在接口中定义静态方法,这些静态方法只能在接口级别被调用,不能在实现类中被覆盖或继承。例如:

      public interface MyInterface {static void staticMethod() {System.out.println("This is a static method.");}
      }
      

JDK 9

Java 9 进一步扩展了接口规范,尤其在模块化编程和接口封装方面有了一些增强。

  • 私有方法(Private Methods):
    • Java 9 允许在接口中定义私有方法。私有方法的引入是为了简化接口代码的重用,帮助将通用的逻辑提取到接口的内部,以减少重复代码。
    • 私有方法既可以是实例方法,也可以是静态方法。它们不能被实现类访问,只能在接口中用于辅助defaultstatic方法。例如:
      public interface MyInterface {default void publicDefaultMethod() {privateHelperMethod();}private void privateHelperMethod() {System.out.println("This is a private helper method.");}
      }
      

JDK 17(Java 17)

Java 17 是一个长期支持(LTS)版本,它在接口和类的封装方面引入了一些进一步的增强:

  • 封闭接口(Sealed Interfaces):
    • Java 17 引入了封闭类和封闭接口(sealed)。封闭接口可以限制哪些类可以实现该接口,提供了一种控制继承结构的机制。
    • 使用封闭接口的关键字为sealed,并且可以结合permits关键字来指定允许实现该接口的类。例如:
      public sealed interface MyInterface permits ClassA, ClassB {void doSomething();
      }
      
    • 这种机制增强了接口的安全性和可维护性,尤其适用于需要更严格控制实现结构的场景。
http://www.lryc.cn/news/465032.html

相关文章:

  • 人工智能图像信号处理器(AI ISP)技术介绍
  • 3D Slicer 教程三 ---- 坐标系
  • Video-LLaMA论文解读和项目部署教程
  • Elasticsearch设置 X-Pack认证,设置账号和密码
  • 机器学习——量子机器学习(Quantum Machine Learning)
  • Android Studio 的 Gradle 任务列表只显示测试任务
  • Keepalived:高可用性的守护神
  • Golang笔记_day08
  • 如何在 React 中更新状态对象的某个值
  • edge浏览器:你的连接不是专用连接
  • PDF 软件如何帮助您编辑、转换和保护文件
  • 如何使用Java爬虫处理API接口返回的JSON数据?
  • Ajax是什么?
  • 技术方向简介
  • 延迟队列实现及其原理详解
  • web APIs
  • 【Web前端概述】
  • 文献阅读:一种基于艾伦脑图谱的空间表达数据可视化、空间异质性描绘和单细胞配准工具
  • Redis学习笔记(三)--Redis客户端
  • 面试知识梳理
  • Unity3D ScrollView 滚动视图组件详解及代码实现
  • 13.java面向对象:封装
  • 记录:网鼎杯2024赛前热身CRYPT01密码学
  • GitHub加速
  • 每天学习一个Linux命令:xrandr
  • 路由表来源(基于华为模拟器eNSP)
  • 并查集(Union-Find)
  • Linux上的AI框架都有哪些?哪些AI框架适合驱动EACO地球链自动发展完善?
  • java的第一个游戏界面
  • 【AIGC】ChatGPT提示词Prompt高效编写模式:Self-ask Prompt、ReACT与Reflexion