我是一个Java新手,出于教育目的有一个问题。我的代码可以正确编译,但是出于好奇,我想知道为什么以及何时需要静态变量。
在Prisoner类的prints()方法内部,我尝试添加System.out.println(cell.name),也尝试在openeror类中添加openDoor()方法。但是,如果没有单元格类中的静态变量,我将无法进行编译。我的问题是为什么?
我尝试阅读静态变量和类/对象的交互。我的理解是可以在没有实例化对象的情况下调用静态变量,并且可以在类的每个实例之间共享静态变量。但是我在主函数中实例化了单元格对象,所以当我使单元格类中的变量动态化(取出时,为什么我的IDE会给我错误提示:“无法对非静态字段cell.cellStatus进行静态引用”)静态一词?我猜是因为我正在尝试与囚犯班内的牢房对象互动?我尝试在没有构造函数的情况下实例化对象,但在没有静态变量的情况下仍然无法正确编译该对象。
请,如果我对静态变量的理解不正确,请为我提供一些文档或提供说明,以帮助我更好地掌握静态变量和对象/类的交互。
感谢您的宝贵时间,我很感谢您可以向我提供的任何反馈或信息/文档。 卢克
PrisonTest:
package Prisoner
public class PrisonTest {
public static void main(String[] args) {
Prisoner bubba = new Prisoner("Bubba", 2.08, 4);
cell c01 = new cell("c01", true);
bubba.openDoor();
bubba.prints();
}
}
囚犯:
package prisoner;
public class Prisoner {
String name;
double height;
int sentence;
public Prisoner(String n, double h, int s) {
this.name = n;
this.height = h;
this.sentence = s;
}
public void prints() {
System.out.println (this.name);
System.out.println (this.height);
System.out.println (this.sentence);
System.out.println("the cell name is: " + cell.name);
}
public boolean openDoor () {
if (cell.cellStatus == true) {
System.out.println("the cell door is now closed");
cell.cellStatus = false;
return cell.cellStatus;
}
else {
System.out.println("the cell door is now open");
cell.cellStatus = true;
return cell.cellStatus;
}
}
}
单元格:
package prisoner;
public class cell {
public static String name;
public static boolean cellStatus;
public cell(String n, boolean cS) {
this.name = n;
this.cellStatus = cS;
}
}
牢房门现已关闭
巴巴
2.08
4
单元格名称为:c01