我对 Java FX 和非常奇怪的应用程序的实现有疑问。让我用代码来展示一下:
想象一个基本应用程序:
import javafx.application.Application;
import javafx.stage.Stage;
public class JavaFXApp extends Application {
// constructor, ...
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
// important stuff
initialize();
// important stuff
stage.show();
}
public void initialize() {
System.out.println("default");
// basically abstract
}
// and other functions.
}
及其扩展(按预期):
public class JavaFXAppExtended extends JavaFXApp {
// constructor, ...
@Override
public void initialize() {
System.out.println("extended");
}
}
现在
JavaFXApp
的召唤对我来说没有任何问题。但是当调用JavaFXAppExtended
时,@Overwrite
基本上是被忽略,而来自父类的initialize
被调用。从而:
JavaFXApp.main(args);
-> default
JavaFXAppExtended.main(args);
-> default
其中“扩展”是预期的。
那么,我是不是错过了什么重要的事情?这违法吗?是我经验不够吗?这可能只是一个错误?我不知道。但我想知道。
JavaFXAppExtended.main(args)
调用静态
JavaFXApp.main
,因为 JavaFXAppExtended 中没有
main
。
JavaFXAppExtended
的调用代码中没有留下任何痕迹。与
JavaFXApp.main(args)
完全相同的代码。静态函数中没有继承的
this
。因此`JavaFXApp.launch被调用。