- 抽象类和抽象方法
abstract void f();
抽象方法是仅有声明而没有方法体的方法。
- 包含抽象方法的类叫做抽象类,如果一个类包含了一个抽象方法,则该类必须限定为抽象类。
- 抽象类和抽象方法可以使类的抽象性更加明确。
- 继承抽象类的类,在运行时不需要 向下转型。
- 接口
- interface关键字用于产生一个完全抽象的类。其中不存在任何提供具体实现的方法。
- 可以在interface前面添加public,但这仅当接口名与文件名相同时才可以。
- 接口可以包含域,但他们是隐式定义为static和final的。
- 通过implements可以用来实现接口,和类的继承类似。
- 接口中被定义的方法必须都是public的,而且默认都是public的。
- 完全解耦
- 接口可以实现代码的解耦,使得代码复用更加容易进行。
- 适配器设计模式可以接受接口所拥有的接口,并产生所需要的接口。
- 采用类的继承有时还是会导致代码耦合度过高,此时可以考虑采用接口。一个接口可以供多个不相关的类进行使用,从而降低了耦合度。
- Java中的多重继承
- Java可以继承任意多个接口,并可以向上转型为每个接口。
- 如果知道某事物应该称为一个基类,那么第一选择应该是使它称为一个接口。
- 通过继承来扩展接口
- 通过继承可以在接口中添加新的方法声明。
- 通过继承可以在新接口中组合数个接口。
- extend只能用于继承一个类,但可以继承多个接口。
- 尽量避免在打算组合的不同接口中使用相同的方法名,这会造成可读性的混乱。
- 适配接口
- 接口一大好处:允许同一个接口具有多个不同的具体实现。
- 接口中的域
- 接口中的域默认是public,static,final的。
- 接口的域不是接口的一部分,他们被存储在该接口的静态存储区域内。
- 嵌套接口
- 接口与工厂
- 接口时实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。