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() 呼び出しは不可能です。