# 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了。。。
# 先看代码:
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()方法;