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の
methodAmethodB
質問 :-
オーバーライドするので、オブジェクトタイプが考慮されます。クラスAではなくクラスBのshowName()メソッドが呼び出された理由は何ですか?そうでない場合、この出力順序の原因は何ですか?