本质:子类重写父类方法,并且使用父类引用指向子类对象,调用此方法是子类的方法。
模板抽象类,定义一些模板方法
public abstract class Cook {
public abstract void doCook();
public void addAfter() {
System.out.println("加盐");
}
public void addOil() {
System.out.println("添油");
}
public void cook() {
addOil();
doCook();
addAfter();
}
public static void main(String[] args) {
// 炒土豆
Cook cook1 = new Potato();
cook1.cook();
System.out.println("-----------");
// 炒番茄
Cook cook2 = new Tomato();
cook2.cook();
}
}
子类重写抽象方法
public class Potato extends Cook {
@Override
public void doCook() {
System.out.println("加入土豆");
}
@Override
public void addAfter() {
System.out.println("加醋");
}
}
public class Tomato extends Cook {
@Override
public void doCook() {
System.out.println("加入西红柿");
}
}