main
メソッドを明示的に指定する代わりに、クラス/抽象クラスを拡張し、そのスーパークラスによって呼び出されるメソッド、例えばinit
をオーバーライドするテストプログラムを作成します。mainを拡張クラスでラップする方法はありますか?
私の試み:
JavaApplication.java
public class JavaApplication {
public JavaApplication(){
this.init(null);
}
public JavaApplication(String[] args) {
this.init(args);
}
public void init(String[] args) {
/* override me */
}
public static void main(String[] args) {
new JavaApplication(args);
}
}
MyApp.java:
public class MyApp extends JavaApplication {
@Override
public void init(String[] args) {
System.out.println("Hello, World!");
}
}
コードはコンパイルが、私のinitメソッドが呼び出されない(文字列はありません表示されません)。
Javaでこの動作を定式化する適切な方法は何ですか?
関連質問:
- can-i-access-a-subclass-method-through-a-base-class-typed-reference
- calling-a-method-of-subclass-through-reflection
- whats-wrong-with-overridable-method-calls-in-constructors
- calling-an-overridden-method-from-a-parent-class-ctor
**私はMyAppを使用していない**と思われるかもしれません。 –
私はそれを理解していますが、私はそれを表現する方法を理解していないので使用しています。 – Dmitry
メインは1つしかなく、呼び出されるメイン(JavaApplicationで定義されたもの)です。私はそのメインがサブクラス(MyApp)のinitではなく、自分のinitを呼び出すようにしたいが、そうしていないようだ。 – Dmitry