《Java编程的逻辑》笔记 19 - 接口的本质

接口的本质.png

概念

很多时候,我们实际上关心的,并不是对象的类型,而是对象的能力

Java使用接口这个概念来表示能力

作用

双方对象并不直接互相依赖,它们只是通过接口间接交互


image.png

使用

  • 定义接口
image.png

interface关键字声明接口,修饰符一般都是public。

interface后面就是接口的名字MyComparable。

接口定义里面,声明了一个方法compareTo,但没有定义方法体,接口都不实现方法。接口方法不需要加修饰符,加与不加都是public的,不能是别的修饰符。

compareTo方法

方法的参数是一个Object类型的变量other,表示另一个参与比较的对象。

第一个参与比较的对象是自己

返回结果是int类型,-1表示自己小于参数对象,0表示相同,1表示大于参数对象

  • 实现接口


    image.png

implements关键字表示实现接口,前面是类名,后面是接口名。

实现接口必须要实现接口中声明的方法,Point实现了compareTo方法

Point的compareTo实现

Point不能与其他类型的对象进行比较,它首先检查要比较的对象是否是Point类型,如果不是,使用throw抛出一个异常

如果是Point类型,使用强制类型转换将Object类型的参数other转换为Point类型的参数otherPoint。

这种显式的类型检查和强制转换是可以使用泛型机制避免的

  • 使用接口

接口不能new,不能直接创建一个接口对象,对象只能通过类来创建。但可以声明接口类型的变量,引用实现了接口的类对象


image.png
image.png

针对接口而非具体类型进行编程,是计算机程序的一种重要思维方式

代码复用

更重要的是降低了耦合,提高了灵活性

接口的细节

  • 接口中的变量

接口中可以定义变量

修饰符是public static final,但这个修饰符是可选的,即使不写,也是public static final

image.png
  • 接口的继承

接口也可以继承,一个接口可以继承别的接口,继承的基本概念与类一样,但与类不同,接口可以有多个父接口


image.png
  • 类的继承与接口

类的继承与接口可以共存

image.png
  • instanceof

与类一样,接口也可以使用instanceof关键字


image.png

使用接口替代继承

使用接口,针对接口编程,可以实现统一处理不同类型的对象,但接口没有代码实现,无法复用代码。将组合和接口结合起来,就既可以统一处理,也可以复用代码了

你可能感兴趣的:(《Java编程的逻辑》笔记 19 - 接口的本质)