9.1 抽象类和抽象方法
1、包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的.(否则,编译器就会报错)
2、如果从一个抽象类继承,并想创建该新类的对象,那么就必须为基类的所有抽象方法提供方法定义。如果不这样做(可以选择不做),那么导出类便也是抽象类,且编译器将会强制我们用abstract关键字来限定这个类。
3、使某个类成为抽象类并不需要所有的方法都是抽象的。
4、抽象是很有用的重构工具,因为它们使我们可以很容易的将公共方法沿着继承层次结构向上移动。
9.2接口
1、abstract关键字允许人们在类中创建一个或多个没有任何定义的方法——提供接口部分,也可以有有定义的方法。
2、interface这个关键字产生一个完全抽象的类。
3、一个接口表示“所有实现了该特定接口的类看起来都像这样”。
4、接口不一定是public的,不加关键字则是宝访问权限的,既是protected的。
5、接口的方法一定是public的。
6、继承用extends
7、实现用implement.
9.3完全解耦
1、创建一个能够根据所传递的参数对象不同而具有不同行为的方法被称为策略模式。
9.4java中的多重继承
1、一个类智能直接继承一个类。
2、一个类能实现多个接口。
3、使用接口的原因:为了能够向上转型为多个基类型(以及由此带来的灵活性);防止客户端程序员创建该类的对象。
4、如果要创建不带任何方法定义和成员变量的基类,那么应该选择接口而不是抽象类。
9.5通过继承来扩展接口
1、通过继承,可以很容易地在接口中添加新的方法声明,还可以通过继承在新接口中组合数个接口。
2、接口可以继承接口,而且是可以继承多个接口
3、接口里可以组合接口
4在打算组合的不同接口中使用的相同的方法名通常会造成可读性的混乱,请尽量避免这种情况。
9.6适配器接口
9.7接口中的域
1、放入接口中的任何域都自动是static和final的。
9.7.1初始化接口中的域
1、在接口中定义的域不能是“空final”,但是可以被非常量表达式初始化。
2、既然域是static的,他们就可以在类第一次被加载时初始化,这发生任何域首次被访问时。
9.8嵌套接口
1、接口可以嵌套在类或其他接口中。
9.9接口与工厂