原理:基于Java的继承和多态特性,子类重写了父类的方法,当调用父类另一个方法去调用被重写的方法时,能够调用到被重写之后的逻辑。
场景:父类提供一个方法壳,由一个统一的方法调起,子类重写父类的方法壳,调用父类的统一方法,将按照父类的步骤,子类的具体逻辑来执行。
例子:
public class Demo {
public static void main(String[] args) throws Exception {
Product a = new Element();
a.printA();
}
}
class Product {
public void printA() {
System.out.println("A");
printB();
}
protected void printB() {
}
}
class Element extends Product{
@Override
protected void printB() {
//super.printB();
System.out.println("B");
}
}
输出:
参考例子:Spring的DefaultBeanDefinitionDocumentReader的注册Bean的方法