点我

概述

应用场景
  • 父类知道每个子类都要做的某个行为,但每个子类要做的情况不一样时,父类就可以定义成抽象方法,交给子类去重写实现(更好的支持多态)
语法
  • 抽象类:访问修饰符 abstract 类名{}
  • 抽象方法:访问修饰符 abstract 返回类型 方法名([参数列表]);
注意事项
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 类该有的成员(成员变量、方法、构造器)抽象类都可以有
  • 抽象类中不能创建对象,仅作为一种特殊的父类,让子类继承并实现
  • 一个类继承抽象类,必须重写完抽象类中的全部抽象方法,否则这个类也必须定义为抽象类
demo
package com.static_;


public class Test {

    public static void main(String[] args) {
        Animal a1 = new Cat();
        a1.setName("小猫咪");
        a1.cry();

        Animal a2 = new Dog();
        a2.setName("小狗");
        a2.cry();

    }
}
package com.static_;

public abstract class Animal{
    private  String name;
    public abstract void cry();
    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }

}
package com.static_;

public class Cat extends Animal{
    public void cry(){
        System.out.println(getName() + "喵喵喵");
    }
}
package com.static_;

public class Dog extends Animal{
    public void cry(){
        System.out.println(getName() + "汪汪汪");
    }
}

模板方法设计模式

解决了什么问题
  • 解决了方法中存在重复代码的问题
写法
  • 定义一个抽象类
  • 在抽象类中定义两个方法:

    • 模板方法:放相同的代码
    • 抽象方法:具体实现交给子类完成、
分类: JAVA

评论

-- 评论已关闭 --

目录