抽象类的概念和作用
抽象的定义
- 抽象就是把多个事务的共性的内容抽取出来,本质就是把我们关注的内容抽取出来。(宝马、奔驰都属于汽车,汽车是抽象出来的概念)
抽象类
- Java中可以定义没有方法体的方法,该方法有子类来具体实现,该没有方法提的方法被称为抽象方法,含有抽象方法的类称之为抽象类
抽象方法的特点
- 只有方法头没有方法体的方法称为抽象方法
- 抽象方法用abstract来修饰
- 抽象方法代表一种不确定的操作或行为
- 抽象方法不能被调用
抽象类的特点
- 定义含有抽象方法的类叫做抽象类
- 抽象类用abstract修饰
- 抽象类代表一种抽象的对象类型
- 抽象类不能实例化
抽象类可以有具体方法,可以没有抽象方法
//A是一个抽象类 public abstract class A{ public void methodA(){} public void methodB(); }
模板方法模式
- 定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为
- 意图:定义了在一个操作中的算法框架,把一些步骤推迟到子类其去实现。模板方法模式让子类不需要改变算法结构而重新定义特定的算法步骤
接口的概念和作用
接口语法
interface 接口名{
//静态常量、抽象方法
}
接口的特点
- 接口只能存放静态常量和抽象方法
- java接口是对功能的扩展
- 通过实现接口,Java类可以实现多实现
- 一个类可以同时继承(extends) 一个父类 并且实现(implements)多个接口
- 接口与接口之间可以通过extends来产生继承关系
接口与抽象类的区别
- 抽象类和具体实现类是一种继承关系 ,也就是说如果采用抽象类的方式,则父类和子类在概念上应该是相同的。
- 接口和实现类在概念上不要求相同,接口只是抽取相互之间没有关系的类的共同特征,而不去关系类之间的关系,它可以没有层次关系的类具有相同行为。
- 抽象类是一组具有相同属性和行为逻辑上有关系的事物的一种抽象,而接口则是对一组具有向同属性和行为的逻辑上不相关的事物的一种抽象
- 对于接口和抽象类的选择,反映出设计人员看待问题的不同角度。抽象类用于一组相关事物,表示”is-a“的关系;而接口用于一组不相关的事物,表示的是”like-a“的关系。
面向接口编程
- 开发系统时,主体架构使用接口,接口构成系统的骨架
- 这样就可以更换接口的实现类来更换系统的实现。
简单工厂模式
- 定义:专门负责一个类来创建其它类的实例,被创建的类通常都具有共同的父类或接口。
- 意图:提供一个类,由它负责根据一定的条件创建某种具体的实例
策略模式
- 定义:是对算法的包装,把使用算法的责任和算法本身分开,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的算法测略类里面作为抽象策略型的子类型,就是:准备一组算法,并将每一个算法包装起来,使得他们可以互换。”
- 意图:针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使他们相互替换。策略模式可以使得算法可以在不影响到客户端的情况下发生变化。