抽象类
抽象类天生就是用来被子类继承的.抽象类天生就是不能够被外部进行实例化的
抽象类使用abstract关键字来进行修饰
抽象类中允许存在构造方法,普通属性,普通方法以及抽象方法.
普通类是没有资格去定义抽象方法
抽象方法也是使用abstract来修饰的,抽象方法是指没有方法体的方法.
抽象的方法天生也是用来被子类重写的.
抽象类是一种抽象的数据类型.
抽象类的继承的特点
- 如果某个普通的子类继承了抽象类,那么这个子类必须要重写这个抽象父类中的所有的抽象方法.
- 如果某个子类继承了抽象类,不想重写抽象父类中的所有的抽象方法,那么需要将这个子类也定义成抽象类.
不能一起混用的修饰符
final和abstract一起使用
private和abstract能不能一起修饰方法.
static和abstract不能一起用来修饰方法
static是不存在多态的.
模板方法设计模式
模板方法模式很常用,其目的是在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。在标准的模板方法模式实现中,主要是使用继承的方式,来让父类在运行期间可以调用到子类的方法。即:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。处理步骤在父类中定义好,具体实现延迟到子类中定义 。
抽象的类应用 - 模板方法设计模式.
模板类中只负责定义
- 需要做的事情 - 不需要具体的实现,具体的实现留给各个子类去实现.
- 做的事情的流程[步骤]
package tech.aistar.design.template;
/**
* 本类用来演示:
* @date: 2021/7/23 9:36 上午
*/
public abstract class TemplateDemo {
//规定了需要完成的事情
public abstract void start();//演员登台
public abstract void play();//演员表演
public abstract void end();//落幕
//提供一个不可变的方法,用来控制事情执行的顺序
public final void execute(){
this.start();
this.play();
this.end();
}
}
缺点
模板方法的优点和缺点:
优点:
- 模板方法提供了一个很好的代码复用平台。
- 实现了反向控制,通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制,符合 “开闭原则”。
缺点:
每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。