学习“接口”

来源:互联网 发布:ptgui全景优化 编辑:程序博客网 时间:2024/06/07 03:53
  1. 类可以实现多个接口。Java编程语言对接口允许多重继承,但是对实现只允许单重继承,即一个类只能扩展另一个类。例如,类可以使用接口继承来拓展其类型,然后再使用组合来提供这些接口的实现。这种设计提供了多重继承在类型方面的灵活性,同时避免了多重实现继承的缺陷,其代价是程序员需要做一些额外的工作。 
  2. 事实上,接口的强大之处正是源于可以只声明和使用具有接口类型而非某个具体类类型的变量。但是,接口类型的引用只能用来访问接口成员。
  3. 接口可以声明3种类型的成员:常量(字段)、方法、嵌套类和嵌套接口。由于为代表特定含义的常量值提供了名字,所以可以将各常量传递给其内部方法。在这咱特殊情况下,如果冗余度级别能够表示成嵌套在该接口内部的枚举类型的常量,那么将会更有效。如果需要在接口中包含共享的、可修改的数据,那么可以通过使用一个具名常量,让其引用存有该数据的对象来实现。嵌套类很适合于定义这种对象。
  4. 在接口中声明的方法都隐式是abstract的,因为没有给出(或者说无法给出)它们的任何实现。因此,它们的方法体只是一个位于方法头后面的分号。除注解外,在接口的方法声明上不允许使用其他任何方法修饰符。因为接口方式隐式地是public的,所以不能再有佬何其他的访问修饰符了。它们也不能有任何用于定义实现特征的修饰符,例如:native, synchronized和strictfp,因为接口不会强加规定实现的细节。它们还不能是final的,因为它们还没有被实现。当然,在具体类中,这些方法的实现可以拥有上述的任意修饰符。另外,接口的方法无论如何都不能是static的,因为static访求不能是abstract的。
  5. 接口修饰符:注解、public、abstract、严格的浮点。(声明为strictfp类型的接口将使在该接口中定义的所有浮点运算都会严格地计算赋值。该修饰符可以应用于常量的初始化表达式和在接口中声明的所有嵌套类型。与类形成对照的是,这并不意味着接口中的所有方法都是隐式地是strictfp的,因为那只是实现的细节。)多个修饰符作用于同一个接口声明时,我们推荐使用上面列出的顺序。
  6. 可以使用extends关键字来扩展接口。与类不同,接口可以扩展多个其他的接口。被扩展的接口是新接口的超接口(superinterface),而新接口是其超接口的子接口。
  7. 因为接口支持多重继承,所以在继承图中可能会包含许多条到同一个超接口的路径,这意味着可以以不同的途径来访问常量和方法但是,因为接口没有定义方法的任何实现,也没有提供任何与对象相关的字段,所以也就不存在任何与这种形式的多重继承语义相关的问题。