有时候我们会遇到这种情况:父类中有方法A和方法B,方法A中调用了方法B。某类继承该类,重写了方法B,但没有对方法A进行重写。那么在用子类的实例调用该方法A时,最终会运行哪一个方法B呢?
我们可以写一段简单的程序验证一下。
class A {
public void printA() {
System.out.println("printA");
printWord();
}
void printWord() {
System.out.println("printWord of A");
}
}
class B extends A {
@Override
void printWord() {
// TODO Auto-generated method stub
System.out.println("printWord of B");
}
}
main方法中使用这两个类。
B b = new B();
b.printA();
程序的运行结果如下:
printA
printWord of B
从结果中我们可以看到,最终调用的是子类中的方法B