gpt4 book ai didi

java - 对静态类和实例化感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:15 26 4
gpt4 key购买 nike

也许有人以前发布过类似的内容,但很多问题都有点令人费解且难以理解,我想在不通过 3 页无关代码的情况下了解问题的本质。我的问题是这样的:

当我尝试实例化我的类时,它告诉我它必须是静态的。我对此感到非常困惑。

package project0;

import javax.swing.*;
import java.util.*;
import java.awt.Button;


public class Project0 {

public static void main(String[] args) {

Test7 lucky7 = new Test7(); //here is where I am instantiating my class and it gives "nonstatic variable this cannot be referenced from a static context."
}

class Test7{

Test7(){
String str1 = "Hello";
changeString(str1);
System.out.println(str1);
}

public void changeString(String str2){
str2 = "Goodbye";
}

}

如果我将 test7 类更改为静态,它可以工作,但我觉得这与应该发生的情况相反,因为我认为静态类无法实例化。

编辑:我想我把 static 误认为是抽象 >.> 但在这种情况下,静态类与常规类有什么不同。还是有点迷茫。

请尽量让答案简单一些,以便我能够理解

最佳答案

静态类绝对可以实例化。

您的 main 方法以及您的 Test7 类都位于某个类中。当 Test7 不是静态类时,Test7 的每个实例都必须有一个封闭实例,该实例是包含 Test7 的类的实例。这就是为什么从主方法调用 Test7 lucky7 = new Test7() 在这种情况下不起作用。

另一方面,静态类没有封闭实例,这就是为什么当您将 Test7 更改为静态时,Test7 lucky7 = new Test7() 可以工作。

关于java - 对静态类和实例化感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556884/

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