有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
接口(interface)是抽象方法和常量值的定义的集合。
实现接口类:
class SubClass implements InterfaceA{}
一个类可以实现多个接口,接口也可以继承其它接口。
常量:所有的常量都用public static final 修饰
public static final int I = 12;
抽象方法:所有的都用public abstract修饰
public abstract void method1();
1从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
2接口是没有构造器的。
3接口定义的就是一种功能。此功能可以被类所实现(implements)
比如:class CC extends DD implements AA
4实现接口的类,必须要重写其中的所有的抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍为一个抽象类
5类可以实现多个接口。----Java中的类的继承是单继承的
6接口与接口之间也是继承的关系,而且可以实现多继承
5,6描述的是Java中的继承的特点。
7接口与具体的实现类之间也存在多态性。只创建实现类的对象,对象调用多个实现接口的方法。
接口用法总结:
1通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系
2通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。
3接口主要用来定义规范。解除耦合关系。
接口之工厂方法的设计模式
概述:
定义应该用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。(两国总统对接大事情,具体细节由两国总统安排给各自小兵「创建小兵对象」去解决「小兵调用方法」)
适用性:
1.当一个类不知道它所必须创建的对象的类的时候
2.当一个类希望由它的子类来指定它所创建的对象的时候
3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候
接口之代理模式
概述:
为其他对象提供一种代理以控制对这个对象的访问。
静态代理模式:代理类只能代理一个接口的方式,若又换了一个接口和被代理类,还得再造一个实现这个接口的被代理类对象。代理类和接口是一一对应的。后面讲反射的时候可以实现一个通用的代理类,实现对所有的被代理的功能的实现,叫动态代理,意味着要动态的来创建一个代理类的对象。