闽公网安备 35020302035485号
.基本方法:由抽象方法(抽象类声明、具体子类实现)、具体方法(抽象类或具体子类声明并实现,具体子类可以覆盖或直接继承)、钩子方法(抽象类中已声明并实现)组成
/**
* 堆代码 duidaima.com
* 炒菜:抽象类
*/
public abstract class StirFry {
/**
* 模板方法
*
* 注意:需要使用final修饰,不允许被子类重写
*/
public final void start() {
// 倒油
this.pourOil();
// 加菜
this.addFood();
// 加调味料
this.addSauce();
// 翻炒
this.fry();
}
/**
* 倒油
*/
private void pourOil() {
System.out.println("倒油");
}
/**
* 加菜
*/
abstract void addFood();
/**
* 加调味料
*/
abstract void addSauce();
/**
* 翻炒
*/
private void fry() {
System.out.println("翻炒");
}
}
具体子类/**
* 青椒炒肉
*/
class GreenPepperFriedMeat extends StirFry {
/**
* 加菜
*/
@Override
void addFood() {
System.out.println("放入五花肉");
}
/**
* 加调味料
*/
@Override
void addSauce() {
System.out.println("放入青椒");
}
}
测试类public class Demo {
public static void main(String[] args) {
// 创建实例对象
GreenPepperFriedMeat gpfm = new GreenPepperFriedMeat();
// 调用模板方法
gpfm.start();
}
}
优缺点