抽象类


抽象类

  1. 抽象类天生就是用来被子类继承的.抽象类天生就是不能够被外部进行实例化的

  2. 抽象类使用abstract关键字来进行修饰

  3. 抽象类中允许存在构造方法,普通属性,普通方法以及抽象方法.

  4. 普通类是没有资格去定义抽象方法

  5. 抽象方法也是使用abstract来修饰的,抽象方法是指没有方法体的方法.

    抽象的方法天生也是用来被子类重写的.

  6. 抽象类是一种抽象的数据类型.

抽象类的继承的特点

  1. 如果某个普通的子类继承了抽象类,那么这个子类必须要重写这个抽象父类中的所有的抽象方法.
  2. 如果某个子类继承了抽象类,不想重写抽象父类中的所有的抽象方法,那么需要将这个子类也定义成抽象类.

不能一起混用的修饰符

  1. final和abstract一起使用

  2. private和abstract能不能一起修饰方法.

  3. static和abstract不能一起用来修饰方法

    static是不存在多态的.

模板方法设计模式

模板方法模式很常用,其目的是在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。在标准的模板方法模式实现中,主要是使用继承的方式,来让父类在运行期间可以调用到子类的方法。即:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。处理步骤在父类中定义好,具体实现延迟到子类中定义 。

抽象的类应用 - 模板方法设计模式.

模板类中只负责定义

  1. 需要做的事情 - 不需要具体的实现,具体的实现留给各个子类去实现.
  2. 做的事情的流程[步骤]
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();
    }
}

缺点

模板方法的优点和缺点:

优点

  1. 模板方法提供了一个很好的代码复用平台。
  2. 实现了反向控制,通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制,符合 “开闭原则”。

缺点:

每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。


文章作者: 码农耕地人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 码农耕地人 !
  目录