没有对象如何访问非静态方法?

时间:2019-07-02 21:50:12

标签: javafx-8 non-static

我是JavaFX的新手。在我的以下代码中,getHBox()是一种非静态方法,无需创建对象即可被访问。

public class Main extends Application { 
    public void start(Stage primaryStage) {

        //Main m = new Main();

        try {
            BorderPane rootPane = new BorderPane();

            rootPane.setTop(getHBox());
            //rootPane.setTop(m.getHBox());

            Scene scene = new Scene(rootPane,400,400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public HBox getHBox()
    {
        HBox hb = new HBox(15);
        hb.getChildren().add(new Button("Press"));
        return hb;
    }


    public static void main(String[] args) {
        launch(args);
    }
}

现在,我已经查看了Stackoverflow中的答案。伙计们正在谈论有关班级成员的事情。 getHBox()方法与任何其他方法有何不同?请提供一些解释或指导我找到合适的教程。

1 个答案:

答案 0 :(得分:3)

  

在我的以下代码中,getHBox()是一种非静态方法,无需创建对象即可访问。

那是不正确的。如所提供的代码中所使用的,getHBox()仅由start()(另一种非静态方法)调用。作为实例方法本身,start()必须在一个对象上被调用(例如,一个由JavaFX实例化的对象)。无需指定目标对象而对getHBox()的调用隐式地指向同一对象,就像它是this.getHBox()一样。

  

getHBox()方法与任何其他方法有何不同?

从任何意义上讲,这都不是JavaFX特有的。