【www.gdgbn.com--js教程】

1.接口一定是抽象的,abstract可写可不写,含义完全相同。


2.接口只能用public或默认的访问限制修饰符来修饰。


3.接口中的变量隐含是 public static final的。即使不显式的使用关键字修饰,编译时也会自动为其加上。


4.接口中的方法一定是公有(public)和抽象(abstract)的,一定不能是静态(static)和最终(final)的。


5.接口引用可以指向间接或直接实现该接口的所有类的对象。


6.接口引用间相互赋值需要满足一定的规则,与类引用间的相互赋值类似,如下所列:
   子接口引用可以直接赋给父接口引用;
   父接口引用赋给子接口引用时需要进行强制类型转换;
   其他没有继承关系类型的接口引用也需要进行强制类型转换。


7.类引用与接口引用间的赋值规则如下:
   类引用赋给接口引用不需要进行强制类型转换,编译时检查类是否直接或间接实现了该接口,若是则编译通过, 可以运行;

接口引用赋给类引用要进行强制类型转换,并且目标类必须实现了该接口,才能通过编译,若运行时对象不符合则报异常。


8.接口与抽象类在具体含义上有很大的不同,抽象类更看重其是什么及其本质,而接口更注重其具有什么样的功能及其能充当什么样的角色。


9.下面列出了类与接口的引用指向对象时的区别:
继承只能让超类引用指向与其属于同一类的对象,例如肉类引用只能指向属于肉类的对象;

接口引用则可以指向任何类的对象,即使对象间没有任何关系,只要这些对象所在的类实现了该接口即可。 



本文来源:http://www.gdgbn.com/wangyezhizuo/13495/