定义:一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
个人理解:将一些方法放抽象类里,然后子类将方法重写,最后调用的时候用抽象类的方法(看代码就懂了)。
UML图解:
优点:将不变的封装起来,可变的部分可以拓展(子类)。
缺点:不同的类就需要一个子类来实现,数量大了,子类也多了,比较复杂。
代码:
public class Main {
public static void main(String[] args) {
//调用的时候用父类
F f = new C1();
f.m();
}
}
//抽象类 里面放抽象方法
abstract class F {
public void m() {
op1();
op2();
}
abstract void op1();
abstract void op2();
}
//子类实现里面的方法
class C1 extends F {
@Override
void op1() {
System.out.println("op1");
}
@Override
void op2() {
System.out.println("op2");
}
}
总结:当有多个子类共有的方法,且逻辑相同,重要的、复杂的方法,都可以用模板方法