2
public class BaseClass {
    private String className;

    public BaseClass() {
        className = "[BaseClass]";
    }

    public void executeAB() {
        System.out.println(className + " executingAB()");
        executeA();
        executeB();
    }

    public void executeA() {
        System.out.println(this.className + " executingA()");
    }

    public void executeB() {
        System.out.println(this.className + " executingB()");
    }
}


public class SubClass extends BaseClass {

    private String className;

    public SubClass() {
        this.className = "[SubClass]";
    }

    public void executeA() {
        System.out.println(className + " executingA()");
    }

    public void executeC() {
        System.out.println(className + " executingC()");
    }

    public static void main(String[] args) {

        BaseClass t = new SubClass();
        t.executeAB();
        // t.executeC();
    }
}

上記の場合、 t.executeAB() を呼び出すと、次の出力が得られます。

[BaseClass] 実行AB()

[サブクラス] 実行A()

[BaseClass] 実行中B()

私の質問は:

BaseClass はどのようにして SubClass からの excuteA() メソッドを認識し、同時にBaseClass は executeC() を認識していないため、 t.executeC() 呼び出しは不可能です。

4

2 に答える 2