也许有些人之前发布过类似的内容,但很多问题都有些令人费解和难以理解,而且我想在不经过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它可以工作,但我觉得这与应该发生的事情相反,因为我认为静态类无法实例化。
编辑:我想我误将静态视为抽象>。>但在这种情况下,静态类与常规类有什么不同。还是有点困惑。
请尝试简单回答,以便我理解
答案 0 :(得分:1)
静态类肯定可以实例化。
您的主要方法以及Test7
类都在某个类中。当Test7
不是静态类时,Test7
的每个实例都必须具有一个封闭实例,该实例是包含Test7
的类的实例。这就是为什么在这种情况下从主要方法调用Test7 lucky7 = new Test7()
并不起作用的原因。
另一方面,静态类没有封闭实例,这就是Test7 lucky7 = new Test7()
在您将Test7
更改为静态时的原因。