9.1 抽象类和抽象方法
1. 抽象方法 public abstract void f(); 仅有声明,没有方法体。
2. 包含抽象方法的类,叫抽象类,包括一个或多个抽象方法,该类必须限定为抽象的。
抽象类的导出类,必须为基类中所有abstract方法提供方法定义,如果不提供,导出类为抽象类。
9.2 接口
[1] interface产生一个完全抽象的类,没有提供任何方法的具体实现,abstract类中可以有抽象和非抽象的方法。
[2] interface关键字代替了class,添加public关键字,否则默认的是包访问权限。interface中可以定义域,隐式是final和static的。
[3] 类遵循某个特定接口,需要用implements关键字。
[4] 对于多态,无论是向上转型为Instrument的普通类、抽象类还是接口,都不会有问题。
9.3 完全解耦
将接口从具体实现中解耦使得接口可以应用于多种不同的具体实现,因此代码也就更具可复用性。
9.4 java中的多重继承
从非接口的类继承,只能继承一个基类。接口可以继承多个:
class Hero extends A implements B,C,D{ //… }
使用接口:能够向上转型为多个基类型,防止创建该类的对象。
对于什么时候使用抽象类,什么时候使用接口?(事实上,如果知道某个事物应该成为一个基类,第一选择应该是使它成为一个接口)
9.5 通过继承来扩展接口
[1] interface 继承interface时,可以后面extends多个接口,类之间不可以。
[2] 在继承,组合使用时,方法的名称要避免相同,覆盖、实现、重载混合在一起容易出错。
9.6 适配接口
接口的优势:允许同一个接口具有多个不同的具体实现。
通过使用interface关键字提供伪多重继承机制。
接口中的任何域(成员变量)都是final和static、public的。
9.8 嵌套接口
类中可以嵌套接口,可以是public和private的。在interface中内嵌接口时,默认只能是public的。在继承有嵌套的接口时,只需用实现该接口中方法即可,其内部的不需要实现。
9.9 接口与工厂
设计模式:工厂,这样代码将完全与接口的实现分离。
总觉得没有理解接口的一些本质,适配、工厂、解耦等。。。