abstract class A {
public void methodA() {
System.out.println("methodA");
methodB();
showName();
}
public abstract void methodB();
public void showName() {
System.out.println("in showname base");
}
}
class B extends A {
public void methodB() {
System.out.println("methodB");
}
public void showName() {
System.out.println("in showname child");
}
}
public class SampleClass {
public static void main(String[] args) {
A a = new B();
a.methodA();
}
}
输出是:
showname child 中的
methodA methodB
问题 :-
由于在覆盖中,考虑了对象类型。是不是 B 类的 showName() 方法被称为不是 A 类的原因?如果不是,那么这个输出顺序的原因是什么?