接口和内部类为我们提供了将接口与实现相分离的方法。
一、抽象类和抽象方法
基类的目的是为它的所有导出类创建一个通用接口,建立通用接口的唯一原因是:不同子类可以用不同的方式表示此接口,通用接口建立一种基本形式表示所有导出类的共同部分,将这个基类称为抽象类。
抽象方法:声明:abstract void f();包含抽象方法的类叫抽象类。
二、接口
interface关键字产生一个完全抽象的类,没有任何方法体,只提供形式,未提供任何具体实现。
要让一个类遵循某个特定接口或一组接口,需要使用implements关键字。
三、完全解耦
如果一个方法操作的是类而非借口,则你只能使用这个类和其子类,接口可很大程度上放宽这个限制,写出可复用性更好的代码。
四、Java中的多重继承
多重继承:组合多个类的接口的行为。
将所有接口名都置于implements之后,用逗号隔开。
使用接口的核心原因:1.为了能够向上转型为多个基类型(以及由此带来的灵活性)2.防止客户端程序员创建此类的对象,并确保这只是建立一个接口。
五、通过继承来扩展接口
通过继承可以很容易的在接口中添加新的方法声明和在新接口中组合多个接口。
六、适配接口
接口的常见用法是策略设计模式,编写一个执行某些操作的方法,该方法将接受一个同样是你指定的接口。即要声明:你可以用任何你想要的对象来调用我的方法,只要你的对象遵循我的接口。
七、接口中的域
八、嵌套接口
嵌套在另一个接口中的接口自动是public的,不能声明为private。
九、接口与工厂
接口是实现多重继承的途径,而生成遵循某个接口对象的典型方式是工厂方法设计模式。在工厂对象上调用的是创建方法,该工厂对象将生成接口的某个实现的对象。通过这种方式,代码将完全与接口实现分离,使得我们可以透明的将某个实现替换成另一个实现。