第6章 接口与实现
6.1 接口
使用关键字interface来定义一个接口。
6.1.1接口声明
定义接口包括接口声明和接口体,和类不同的是,定义接口时使用关键字interface来声明自己是一个接口,格式如下:
interface 接口的名字
6.1.2 接口体
接口体中包含常量的声明(没有变量)和抽象方法两部分。接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量的访问权限一定是public,而且是static常量(允许省略public、final和static修饰符),所有的抽象方法的访问权限一定都是public(允许省略public abstract修饰符)。
6.2 实现接口
①类实现接口:一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口。如果实现多个接口,用逗号隔开接口名。
②重写接口中的方法
6.3 接口的UML图
顶部第一层是名字层,接口的名字必须是斜体字形,而且需要用<<interface>>修饰名字,并且该修饰和名字分列在两行。
第二行是常量层,列出接口中的常量及类型,格式是“常量名字:类型”。
第三层是方法层,也称操作层,列出接口中的方法及返回类型,格式是“方法名字(参数列表):类型”。
使用虚线连接类和它所实现的接口,虚线的起始端是类,虚线的终点端是它实现的接口,但终点端使用一个空心的三角形表示虚线的结束。
6.4 接口回调
接口回调表示一个变量的地址在某一个时刻存放在一个指针变量中,那么指针变量就可以间接操作该变量中存放的数据。
6.5 理解接口
(1)接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示;
(2)可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为。
6.6 接口与多态
由接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现烦那个是,那么接口变量在回调接口方法时,就可能具有多种形态。
6.7 接口参数
如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传递给该接口参数,那么接口参数就可以回调类实现的接口方法。
6.8 abstract类与接口的比较
abstract类和接口的比较如下:
①abstract类和接口都可以有abstract方法。
②接口中只可以有常量,不能有变量;而abstract类中既可以有常量,也可以有变量。
③abstract类中也可以有非abstract方法,借口不可以。