我对java和gui有疑问,这个问题一直困扰着我。我已经发布了一个小代码,我需要你看看它的构造函数部分。
import java.awt.*;
class First extends Frame {
First(){
Button b=new Button("click me");
b.setBounds(30,100,80,30);// setting button position
add(b);//adding button into frame
setSize(300,300);//frame size 300 width and 300 height
setLayout(null);//no layout manager
setVisible(true);//now frame will be visible, by default not visible
}
public static void main(String args[]){
First f=new First();
}
}
据我所知,在main方法中,我们创建了一个类" First"的对象。我也明白,当创建一个新对象时,会调用其类的构造函数进行初始化。
我怀疑的是,我们如何在没有点运算符的情况下使用setSize,setLayout,setVisible函数?如果这些函数要修改对象,那么创建它会触发构造函数调用,我们是不是应该使用this指针?难道不是我们一直这样做吗?但我在互联网上遇到过类似的代码,最近一直很困惑。任何帮助都将非常感激。
答案 0 :(得分:1)
setSize
,setLayout
和setVisible
方法可以直接使用,因为它们是Frame
类的成员,而您的First
类是Frame
的子类。
从这个意义上讲,你正在工作"内部" Frame
对象可以直接调用其成员。
您只需要从对象外部限定方法调用,以便Java可以告诉您正在调用哪个对象。
可以使用this
明确调用这些方法,即
this.setSize()
,但假定为this
,因此您可以编写更简洁的代码。并非所有语言都这样做 - 例如在Python中,您总是需要指定this
(在Python中称为self
)
答案 1 :(得分:0)
您发布的代码包含对setSize(),setLayout()等方法的引用,这些方法继承自Frame类,并且始终可用于当前正在执行的对象。
在java中,没有像C或C ++那样的显式指针的概念。但是this
关键字引用了当前对象。
因此,使用此关键字是可选的,
setSize(300,300);
this.setSize(300,300);
两者都意味着同一件事。