Java 图形用户界面和构造函数

Java gui and constructor

我对 java 和 gui 有疑问,这已经困扰了我一段时间 now.Below 我已经发布了一个小代码,我需要你看一下它的构造函数部分。

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方法中,我们已经创建了class"First"的一个对象。我还了解到,当创建一个新对象时,会调用其 class 的构造函数进行初始化。

我的疑问是我们如何在没有点运算符的情况下使用 setSize、setLayout、setVisible 函数?如果这些函数要修改对象,创建对象会触发构造函数调用,那么我们不应该使用 this 指针吗?我们不是一直都是这样做的吗?但是我在互联网上遇到过类似的代码片段,最近真的很困惑。非常感谢任何帮助。

setSizesetLayoutsetVisible方法可以直接使用,因为它们是Frameclass的成员,而你的Firstclass 是 Frame 的子 class。

从这个意义上说,您正在使用 "inside" Frame 对象,因此可以直接调用其成员。

您只需要限定来自对象外部的方法调用,这样 Java 就可以知道您正在调用哪个对象。

可以使用 this 显式调用这些方法,即 this.setSize(),但是this是假定的,所以你可以写出更简洁的代码。并非所有语言都这样做 - 例如在 Python 中,您始终需要指定 this(在 Python 中称为 self

您发布的代码包含对 setSize()、setLayout() 等方法的引用,这些方法继承自 Frame class,并且始终可用于当前正在执行的对象。

在java中没有C或C++中显式指针的概念。但是有 this 关键字引用当前对象。

因此,此关键字的使用是可选的,

setSize(300,300);

this.setSize(300,300);

两者是一回事。