首页 > 代码库 > 《Java开发手册》学习进程之第9章接口
《Java开发手册》学习进程之第9章接口
接口中的成员变量:
与类不同,在接口中只能定义常量属性,并且可以不必使用public、statict和final修饰,因为即使不使用这些修饰符,编译时也会为其加上,即接口中的成员变量隐含的是“public static final”的。另外,必须在声明的同时给出其值。
接口中的方法:
接口中的方法必须是抽象的,原因是接口只是代表了一个契约,表示实现它的类有什么样的功能,具体实现是由实现它的类完成的。
接口中的方法必须是public、abstract的,不能像接口中的成员变量一样使用final和static。
接口引用的使用:
不能将接口通过new来实例化,但可以通过接口类型的引用来指向实现了接口的对象。
与类型引用不同,任意两个接口的引用都可以进行强制类型转换,不需要转换的目标接口类型与转换前的接口类型有继承关系。因为一个对象所在的类可以实现多个没有关系的接口,这些接口都可以指向其对象,但如果接口所指向的对象不满足要求,则运行时会产生异常。
类引用与接口引用间的赋值:
- 类引用赋给接口引用不需要进行强制类型转换,编译时检查类是否直接或间接实现了该接口,若是则编译通过,可以运行;
- 接口引用赋给类引用要进行强制类型转换,但不是随便转换,必须是目标类实现了接口。
注意第203页关于比较接口与抽象类的内容。
接口的回调:
在事件监听处理模型中经常使用接口与回调的实现。
事件A发生时要执行处理事件A的代码。不过,判断何时发生事件A及何时执行处理该代码是固定的,可以先行编写好,而事件A的具体实现代码开放给其他开发人员编写。可以有多种不同的实现,使用时可以注册到具体需要的实现来处理。
instanceof的使用:
instanceof用于检查引用指向的对象是否可以看作指定的类型,但不能用来测试对象到底是哪个特定的类型,因为对于对象所在的类型及其父类测试都能通过。
若测试的引用为null值,其结果总是返回false。
在不允许instanceof进行测试的情况中,要想instanceof测试能通过编译,参与测试的引用类型必须能够强制转换成测试的类型或接口类型。
《Java开发手册》学习进程之第9章接口