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

接口的扩展

1. 接口中新增的方法

JDK7之前接口中只能定义抽象方法。

JDK8的新特性:接口中可以定义有方法体的方法。(默认、静态)

JDK9的新特性:接口中可以定义有私有方法体的方法。

有方法体的方法:接口升级时,为了兼容性而设置的。

JDK8以后:

允许在接口中定义默认方法,需要用关键字default修饰。

作用:解决接口升级的问题

接口中默认方法的定义格式:

         格式:public default 返回值类型 方法名(参数列表){}

        范例:public default void show(){}

接口中默认方法的注意事项:

        默认方法不是抽象方法,所以不强制被重写。但是如果被重写,重写的时候去掉default关键字。

        public可以省略,default不能省略。

        如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法重写。

1.1 JDK8以后接口中新增的方法

允许在接口中定义静态方法,需要用static修饰

接口中静态方法的定义格式:

        格式 :public static 返回值类型 方法名(参数列表){}

        范例:public static void show(){}

接口中静态方法的注意事项:

        静态方法只能通过接口名调用,不能通过类名或者对象名调用。(因为static方法,不在虚方法表中),所以不需要重写。

        public可以省略,static不能省略。

1.2 JDK9以后接口中新增的方法

此方法只为Inter接口提供服务,不需要外类访问。

接口中私有方法的定义格式:

普通的私有方法,给默认方法服务的。

        格式:private 返回值类型 方法名(参数列表){}

        范例:private void method(){}

静态的私有方法,给静态方法服务。

        格式2: private static 返回值类型 方法名(参数列表){}

        范例2: private static void method(){}

2. 接口的应用

接口理解成行为的规则,需要哪个规则,就实现对应的接口。

        1.接口代表规则,是行为的抽象。想要让哪个类拥有一个行为,就让这个类实现对应的接口就可以了。

        2.当一个方法的接口是参数时,可以传递接口所有实现类的对象,这种方式称之为接口多态。

3. 适配器设计模式

设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性、程序的重用性。

简单理解:实际模式就是解决各种问题的套路。

适配器设计模式:解决接口与接口实现类之间的矛盾问题。

当一个接口中抽象方法过多,但是我只要使用其中一部分的时候,就可以适配器设计模式。

书写步骤:

         编写中间类XXXAdapter,实现对应的接口。

        对接口中的抽象方法进行空实现。

        让真正的实现类继承中间类,并重写需要写的方法。

        为了避免其他类创建适配器类的对象,中间的适配器类用abstract进行修饰。


http://www.kler.cn/a/413670.html

相关文章:

  • go web单体项目 学习总结
  • NAT:连接私有与公共网络的关键技术(4/10)
  • python学opencv|读取图像
  • 浅谈Java库之‌Guava
  • react 的路由功能
  • MySQL系列之远程管理(安全)
  • go web单体项目 学习总结
  • 性能测试工具|如何有效度量前端性能
  • idea或datagrip连接opengauss数据库
  • SQL for JSON
  • React拆分组件中的传值问题
  • python之poetry 安装、创建项目、修改源、创建虚拟环境等操作
  • PHP中的命名空间与自动加载机制详解
  • Ubuntu22.04 升级kernel更新WiFi7 driver
  • Linux Shell 脚本题目集
  • Soul App创始人张璐团队亮相GITEX GLOBAL 2024,展示多模态AI的交互创新
  • vue——v-model,computed,watch(内含项目实战)
  • Bitcoin---P2SH;P2SH举例;P2SH的局限性
  • 走出“ICU”,小鹏汽车低价回血
  • 速盾:ddos防御手段哪种比较好?高防cdn怎么样?
  • spring声明式事务源码详解
  • springboot+redis+lua脚本实现滑动窗口限流
  • 追加docker已运行容器添加或修改端口映射方法
  • 可视化绘图技巧100篇基础篇(十)-堆叠条形图(stacked bar)(二)
  • Unity-Lightmap入门篇
  • Mongodb入门到放弃