gpt4 book ai didi

java - 当您在 Java 中调用 new 时,它会创建构造函数或类的副本吗?

转载 作者:行者123 更新时间:2023-12-02 05:26:08 24 4
gpt4 key购买 nike

我目前正在做一项 Java 作业,出于某种原因,它有效 - 但在我看来,它不应该!我有一个主要方法,通过调用创建三个新按钮

panel.add(new ButtonApp());

ButtonApp 是在我的 ButtonApp 类中定义的构造函数。

在我的课开始时,我有一个变量声明如下:

public int clicks = 0;

此变量的目的是跟踪用户点击其特定 ButtonApp 的次数。每次点击后都会调用 clicks++。

现在,在我看来,每次单击按钮时,clicks 变量都应该递增,因此,如果单击左侧按钮,它也应该递增中间按钮和右侧按钮。

简而言之,我所拥有的本质上是:

public class ButtonApp() {
public int clicks =0;

public static void main(String[] args) {
//create JPanel/Frame etc etc
panel.add(new ButtonApp());
panel.add(new ButtonApp());
panel.add(new ButtonApp());
}

public ButtonApp(){
//creates a new button
this.actionListener(this);
}

public void update(){
clicks++;
}

public void actionPerformed (ActionEvent event){
update();
}
}

我不是总是在此处增加一个 clicks 变量吗?

最佳答案

Am I not always incrementing one clicks variable here ?

不,您正在处理实例变量。每个使用 new

创建的对象都有此变量的一个副本

如果您将代码更改为:

public static int clicks =0;

您确实只有一个变量会被多次更改(静态字段属于类,实例字段属于实例)

引用:

(全部来自 Java Tutorial > Learning the Java Language > Classes and Objects 部分)

关于java - 当您在 Java 中调用 new 时,它会创建构造函数或类的副本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4888946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com