先加载静态内容->执行静态代码块 由于父子关系,所以子类加载之前需要先加载父类。
执行父类的初始化块和构造器。
执行子类的构造器
将上下文中的一些不会变化的内容保留下来 在父类中实现
并且定义整个程序的执行流程
将核心的业务逻辑或者是算法逻辑延迟到子类中去实现。
public class Test03 { public static void main(String[] args) { Water w1 = new Tea(); w1.flow(); } } abstract class Water{ private void fireWater() { System.out.println("咕噜咕噜咕噜"); } public abstract void pp() ; private void drink() { System.out.println("墩儿~墩儿~墩儿~墩儿~"); } public void flow() { fireWater(); pp(); drink(); } } class Tea extends Water{ public void pp() { System.out.println("冲泡"); } } class Caf extends Water{ public void pp() { System.out.println("搅拌"); } }