私はJavaで抽象クラスを持っています。私は彼のサブクラスの特定のメソッド(存在する場合)をリフレクションで呼び出す必要があります。だから、未知のサブクラスの呼び出しメソッド
public abstract class Parent {
public void doIt(String functionName) {
if (the caller class have method called as functionName parameter) {
call it
}
}
}
public class Child extends Parent{
public void spacialMethod() {
System.out.println("Child special method called");
}
}
public class Child2 extends Parent{
// Empty
}
私は、そのコードを実行する場合:現在のサブクラスが「specialMethod」と呼ばれる方法を持っている場合
Child child = new Child();
child.doIt("spacialMethod"); // Will print the text
Child2 child2 = new Child2();
child2.doIt("spacialMethod"); // Nothing will happened
は、どのように私は親クラスで確認できますか?
なぜですか?なぜ、抽象クラスで「何もしない」バージョンを定義して呼び出すだけで、サブクラスがそれをオーバーライドすれば、そのバージョンが呼び出されるのはなぜですか? –