1、抽象方法:
目的:
类的行为特征需要定义方法来进行描述,对于无法确定实现方式的方法可以写成抽象方法。
抽象方法特点:
- 没有方法体
- 抽象方法必须被abstract修饰
-
abstract 返回值类型 方法名称(参数列表);
2、抽象类
- 当一个类中需要包含抽象方法的时候,就必须定义为成抽象类
抽象类特点:
- 抽象类必须被abstract修饰
- 抽象类可以继承抽象类
- 非抽象类继承抽象类必须实现抽象类中所有的抽象方法
注意:
- 抽象类是普通类的功能扩充,抽象类中可以定义抽象方法
3、接口
当一个抽象类里面全是抽象方法的时候,可以把该类设计为接口
目的:
- 抽象类的非抽象子类必须实现抽象类所有的抽象方法,不够灵活。
- 接口是对行为的约束,可以写一个接口让有需求的类去实现接口中的抽象方法。
接口特点:
- 接口中主要是用来定义抽象方法,对行为进行约束
- 接口会默认为接口中的变量加上public static final,即全局常量
- 接口会默认为接口中的方法加上public abstract
- 接口中的方法访问权限写与不写都是public,不写也不是default而是public
- 接口只能别的接口继承
- 接口只能被类实现
NOTE:
1、共有的属性和行为可以抽取到父类中--抽共性
2、子类都相同的行为可以在父类中设计为普通方法
3、子类都各不相同的行为可以在父类中设计为抽象方法,同时将父类设计为抽象类
4、一部分类具有的行为一部分类没有的行为可以设计为接口,有需求就去实现改接口
5、类只能单继承但是可以多实现,往往都是继承一个父类实现多个接口
NOTE:
适配器设计模式:
问题:接口实现类需要实现所有的接口,太多了!
解决:可以设计一个无法被实例化的抽象类对接口中所有的抽象方法进行空实现,这样的类被称为xxxxAdapter,作为中间类。让真正的实现类继承中间类,重写需要用的方法,由于中间类是个抽象类,需要实现它所有的抽象方法,但是中间类一个抽象类方法都没有,所以实现类继承抽象中间类(xxxxAdapter)选择一个自己想重写的方法重写就行了。