【www.gdgbn.com--面向对象编程】

为什么不支持多重继承:依据Sun的官方说法是,避免c++那样管理多重继承的层次关系而带来的复杂性

  (主要是在多态覆盖方法的时候采用的动态绑定机制),换成用接口来实现多重继承的大部分功能,一个

  类只能有一个父类,但可以有多个接口,以此对多继承提供了有力的支持。

  2.类中声明了系统可以提供的服务,类似于电路中的模块,但是不包含具体的实现。例如:


 public interface Photographable{
  public void takePhoto();
  }

  3.接口中的成员变量默认都是public、static、final类型,因此必须被显示初始化。方法默认都是

  public、abstract。这是必须遵守的。

  4.接口没有构造方法,不能被实例化。

  5.一个接口不能实现另一个接口,但是它可以继承多个接口。例如:


 public interface C extends A,B{
  void methodC();
  }

  6.接口必须通过类来实现它的抽象方法,例如:


 public class Glass implements Transparency{...}

  要是一个类要实现某个接口时,它必须实现接口中所有的抽象方法,除非这个类被定义为抽象类。

  7.允许定义接口类型的引用变量去引用实现了该接口的类的实例:


 Transparency t=new Glass();

  8.抽象类与接口都是位于继承树的上方,都不能被实例化,都可以包含抽象方法。但前者可以提供默认实

  现,而后者则必须包含抽象方法。接口一旦确定就不能随意改动了,否则就带来太大的麻烦。接口不要求

  它的实现类在语义上是同一种类型,所以要是非同类型的相同方法类型则使用接口,利于继承树的合理化

  。接口是系统最高层次的抽象类型。而抽象类则是介于“抽象”和“实现”之间的半成品,抽象类力所能

  及地完成了部分实现。定制模式就是一种接口颗粒度细化的设计模式。

  9.适配器模式:

  当两个系统的接口不匹配的时候使用。采用组合关系来实现较好。这就类似于平时使用的笔记本电脑适配

  器。而在JAVA中有许多实现了接口的默认适配器类,例如MouseListener提供了一个默认适配器

  MouseAdapter类,继承这个类然后覆盖相应方法即可。

  10.代理模式:

  代理的共同特征是可以替代委托人去和第三方通信,对信息进行初步判断后转发或过滤消息,但是不能取

  代委托人的任务。常用于对象分布在不同的机器上时,为了节约通信而进行的本地代理。

  11.标志类型模式:

  作为某种东西,比如食物,而单独抽象出来的一个接口(里面是空的),在方法中只有传入该类型的变量

  才允许。也就是说,保护了方法的可实施性。在JAVA中的两个典型例子是,java.io.Serialize接口和

  java.io.Remote接口。

  12.常量接口模式:

  相关的常量放在专门的一个常量接口中定义,使用import static XXX进行静态引用。

本文来源:http://www.gdgbn.com/jsp/22038/