从今天开始,文章的标题不在标明年日月,因为系统会自动显示日期。今天是纯文本,因为书上的例题都够说明问题的了,部分的原理继承于前几天的。
2011-05-19
1、接口只能被接口继承。
2、接口中的成员变量,必定是public、static、final型的,定义之时可写可不写。但一般为了方便是不写的。从这可以看出,接口中的成员变已经不见成员变量了,而叫常量。
3、接口可以看作是“纯粹”的抽象类:接口中所有的方法必须是抽象的。且实现这个接口的类必须实例化所有在接口中声明的方法,继承这个接口的抽象类可以部分实例化。
4、接口中的方法,隐含都是public和abstract,不能是static、不能是final。所以接口中的方法很单调,除public、abstract外不能写其他修饰符,且写于不写是随意的。
5、接口类似于类但不是类,所以引用的类型可以是接口但不能用new进行实例化。接口引用间的赋值与类相似:
(1)、子接口引用可以直接赋给父接口的引用;
(2)、父接口引用不能直接赋给子接口,需要强制性类型转换。这点与父子类间的引用的赋值有不同之处:前面提到,能否强制转换只有运行时才知道,原因是运行时系统会考虑引用所指向的对象,对象不同就会运行报错。接口是不能有对象的。换而言之,这一点如果编译通过,运行必通过。
(3)其他没有继承关系的接口引用需要强制类型转换才可赋值。从(2)、(3)可以看出,接口型的引用可以通过强制类型转换相互赋值,这里引用就变成了一个纯粹的指针了。当日,当接口型引用指向对象之后(比如指向的是实现接口的类的对象)就不能这么说了。
6、instanceof的使用。功能是检查引用指向的对象是否可以看作指定的类型。格式如下:
<引用>instanceof<类或接口类型>顾名思义,instance of:……是否是……的实例。注意上面这句话用了“看作”这个词,而不是“就是”。即,引用类型如果是后面要测试类或接口类型,或是它的直接或间接子类类型,都会返回True。由此可看出,单凭返回ture是不能判断要测试对象是那个特定类型(因为这个特定类的父类都是返回true的)。
7、若引用是是null,则测试结果总为false。
8、instanceof不是总能通过编译的。参与测试的引用类型必须能过强制转化成测试的类或接口类型,此保证了比较的实际意义。