静态变量和类/对象交互

时间:2019-01-14 21:40:53

标签: java class

我是一个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

0 个答案:

没有答案