Java 8 改进的接口

接口是一种抽象的更彻底的抽象类,接口里的所有方法都是抽象方法。
本文包含如下:

  1. 接口的概念
  2. Java 8 中接口的定义
  3. 接口的继承
  4. 使用接口
  5. 接口和抽象类
  6. 面向接口编程

1. 接口的概念

在这里插入图片描述
可见,接口是从多个相似类中抽象出来的规范,不停任何实现。接口体现的是规范和实现分离的设计哲学。
接口的好处:
在这里插入图片描述
软件系统的各模块也应该采用这种面向接口的耦合,降低各模块之间的耦合,为系统提供更好的可扩展性和维护性。
接口里通常是定义一组公用方法。

2. Java 8中接口的定义

定义接口形式如下:
在这里插入图片描述
在这里插入图片描述
在上面的语法中:
在这里插入图片描述
接口里所含的内容说明:
在这里插入图片描述
接口的访问控制修饰符说明:
在这里插入图片描述
对于接口定义的静态常量;
在这里插入图片描述
在这里插入图片描述
接口的定义的方法:
在这里插入图片描述
接口定义的内部类、内部接口、内部枚举类:
在这里插入图片描述
下面定义一个接口:
在这里插入图片描述
在这里插入图片描述
接口里的成员变量默认是使用 public static final 修饰的,因此即使另一个类处于不同包下,也可以通过接口来访问接口里的成员变量。如下面程序:
在这里插入图片描述
在上面程序中:
在这里插入图片描述
在这里插入图片描述

3. 接口的继承

接口的继承支持多继承,即一个接口可以有多个直接父接口。
子接口继承父接口,将会获得父接口里定义的所有抽象方法、常量。
在这里插入图片描述

4,使用接口

接口的用途:
在这里插入图片描述
在这里插入图片描述
实现接口和继承父类相似,一样可以获得所实现接口里定义的常量(成员变量)、方法(包括抽象方法和默认方法)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下展示一个实现接口的类:
在这里插入图片描述
在上面的程序中:
Printer 类实现了 Output 接口和 Product 接口,因此 Printer 对象既可以赋给 Output 变量,也可以赋给 Product 变量。仿佛 Printer 类既是 Output 类的子类,也是 Product 类的子类,也就是Java 提供的模拟多继承
在这里插入图片描述
实现接口方法时,必须使用 public 修饰符
在这里插入图片描述
在这里插入图片描述

5. 接口和抽象类

接口和抽象类都具有如下特征:
在这里插入图片描述
接口和抽象类的差别:
在接口类中:
在这里插入图片描述
而对于抽象类:
在这里插入图片描述
除此之外,这两者在用法上存在如下区别:
在这里插入图片描述

6. 面向接口编程

面向接口可以降低耦合。以下介绍两个应用场景:

1.简单工厂模式
在这里插入图片描述
在这里插入图片描述
上面的 Computer 类已经完全与 Printer 类分类,只是与 Output 接口耦合。Computer 不再负责创建 Output 对象,系统提供一个Output 工厂来负责生成 Output 对象,这个 OutputFactory 工厂代码如下:
在这里插入图片描述
在这里插入图片描述
下面是BetterPrinter 实现类的代码,BetterPrinter 只是对原有的Printer 进行简单修改,以模拟系统重构后的改进。
在这里插入图片描述
上面的 BetterPrinter 类也出现了 Output 接口,因此也可被当成 Output 对象使用,于是只要把 OutputFactory 工厂类的 getOutput() 方法中粗体字代码改为如下代码:
return new BetterPrinter();
再次运行前面的 OutputFactory.java 程序,发现系统运行时已经改成 BetterPrinter 对象,而不是原来的 Printer 对象。
在这里插入图片描述
对于设计模式的理解:
在这里插入图片描述

2. 命令模式

考虑这种场景:某个方法需要完成一种行为,但这个行为的具体实现无法确定,必须等到执行该方法时才可以确定。
这个方法不仅需要普通数据可以发生变化,执行方法体可能也需要发生变化,难道把“处理行为”作为参数传进来?
在这里插入图片描述
在这里插入图片描述
上面的 Command 接口里定义了一个 process() 方法,这个方法用于封装“处理行为”;但是不确定其处理行为。
在这里插入图片描述
下面程序示范了对数组的两种方式:
在这里插入图片描述
在这里插入图片描述
运行上面程序,最后输出结果如下图所示:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值