1.抽象类和抽象方法
- 抽象类(抽象基类):通用接口建立起一种基本形式,以此表示导出类的共同部分
- 如果一个类包含一个或多个抽象方法,该类必须限定为抽象类
- 如果从一个抽象继承的,并像创建该新类对象,那么就必须为基类中的所有抽象方法提供方法定义
- 我们可以创建一个没有任何抽象方法的抽象类
- 抽象类和抽象方法可以使类的抽象性明确起来,并告诉用户和编译器怎么使用他们
- 抽象类可以很容易的将公共方法沿着继承层次向上移
2.接口
- abstract关键字,允许人们在类中创建一个或多个没有定义的方法,由此类的继承类来具体实现这些方法
- interface关键字,产生一个完全抽象的类,它允许创建者确定方法名、参数列表、返回值类型,但是没有方法体
- 接口被用来建立类与类之间的协议
- 接口中可以显示声明方法为public的,但是即使你不这么做,他们也是public的
3.完全解耦
- (1) 客户端程序员遵守接口来编写他们的类
- (2) 适配器模式:适配器中的代码将接受你所拥有的代码,并产生你所需要的接口
4.Java的多重继承
- 格式:Class Hero extend A,B implement C,D,E
- 可以继承多个接口,并向上转型为每个接口
5.通过继承来拓展接口
- 通过继承可以很容易的在接口中添加新的方法
- 通过继承可以在新接口组合多个接口
- 组合接口时尽量避免名字冲突
6.适配接口
- 我们可以在现有类之上添加新的接口,所以这意味着让方法接受接口类型,是一种让任何类都可以对该方法进行适配的方式
7.接口中的域
-
放入接口中的任何域都自动是static和final的
-
接口中的域自动是public的,所以没有显示指明这么一说
-
初始化接口中的域
在接口中定义的域不能是“空final”,但是可以是被非常量表达式初始化
8.嵌套接口
- 实现一个private接口,可以强制该接口中的方法定义不要添加任何类型信息(也就是说不能向上转型)
- 嵌套在另一个接口中的接口自动是public的,而不能声明为private
9.接口与工厂
-
工厂方法设计模型
我们在工厂对象调用的是创建方法,而该工厂对象将生成接口的某个实现对象。我们可以透明地将某个实现替换成另一个实现