# 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了
# 先看代码:
public class Common {
  public static void main(String[] args) {
    Sub sub = new Sub();
    sub.testSub();
  }
}
class Parent {
  protected boolean test() {
    throw new RuntimeException();
  }
  protected void testParent() {
    if (test()) {
      System.out.println(this.getClass().getName());
    }
  }
}
class Sub extends Parent {
  public void testSub() {
    super.testParent();
  }
  @Override
  public boolean test() {
    return true;
  }
}
# 上面的代码的输出结果是:
com.qq.demo.common.Sub
# 大致流程是 main 中调用子类的 testSub()方法 -- testSub()方法中调用父类的testParent() 方法 -- testParent() 方法调用test()方法;需要注意的是test()方法在父类和子类中都存在,子类重写了父类的test()方法;