从类的方法代码或类的实例调用方法之间有区别吗?

时间:2013-04-01 09:20:18

标签: java object methods call

我这里有一段代码,我不确定几行命令是什么:

//this bit is the body of the main method
//lots of stuff omitted
project frame = new project();
frame.createGUI();

private void createGUI() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    panel = new JPanel();
}

因此,当调用frame.createGUI();时,createGUI();中的两个命令会发生什么? 他们是

setDefaultCloseOperation(EXIT_ON_CLOSE);
panel = new JPanel();

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.panel = new JPanel();

还是其他完全不同的东西? 我是Java的新手,今年开始了12年级的计算机科学,但是有点领先于课程。

谢谢你的时间!

4 个答案:

答案 0 :(得分:1)

setDefaultCloseOperation(EXIT_ON_CLOSE);

设置用户关闭Window(JFrame)时发生的操作。该方法适用于JFrame。如果类扩展了JFrame,那么setDefaultCloseOperation(EXIT_ON_CLOSE);就可以了,因为它会调用JFrame的方法,如果不是,那么它应该是frame.setDefaultCloseOperation(EXIT_ON_CLOSE);但是如果项目扩展JFrame将会有效

panel = new JPanel();

这会创建一个新面板。

答案 1 :(得分:1)

Java中的每个非静态方法都有一个名为this的隐藏参数。它的值是调用中点前面的对象。在方法体内,其他方法的调用隐含在它们前面this.。如果它们无法在本地解析,那么变量的使用也是如此。如果this引用是显式的,那么您的方法将如下所示:

private void createGUI(project this) {
    this.setDefaultCloseOperation(this, EXIT_ON_CLOSE);
    this.panel = new JPanel();
}

在主方法中调用createGUI时,真正发生的事情是这样的:

frame.createGUI(frame);

运行createGUI时,this引用是对frame的引用。

答案 2 :(得分:0)

frame.createGUI();表示您在上面定义一行的对象frame调用方法createGUI()

setDefaultCloseOperation(EXIT_ON_CLOSE);这意味着当用户单击窗口左上角的X按钮时,将关闭该窗口。

您可以尝试一下并从setDefaultCloseOperation(EXIT_ON_CLOSE);方法中删除createGUI(),看看会发生什么

如果您想了解更多信息,请查看here

答案 3 :(得分:0)

你的两个选择真的是同一个。在这两种情况下,您都在调用您创建的frame对象的方法。在课程的方法中,您不必具体说:this.doSomethimg()this.myField = 123,您只需撰写doSomething()myField = 123即可。从类外部的方法,您必须指出您希望方法调用的实例。