Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java中的不同类访问变量?_Java - Fatal编程技术网

如何从Java中的不同类访问变量?

如何从Java中的不同类访问变量?,java,Java,我在访问另一个类中的变量时遇到问题。以下是我的变量: public static byte agressivePoints = 0; public static byte peacefullPoints = 0; public static byte meanPoints = 0; public static byte happyPoints = 0; public static byte sadPoints = 0; 我把它们放在我的主课之外。在这个类中,我将从另一个类访问这些变量以将它们放

我在访问另一个类中的变量时遇到问题。以下是我的变量:

public static byte agressivePoints = 0;
public static byte peacefullPoints = 0;
public static byte meanPoints = 0;
public static byte happyPoints = 0;
public static byte sadPoints = 0;
我把它们放在我的主课之外。在这个类中,我将从另一个类访问这些变量以将它们放入这个类中

public class Check_Anwser {
    public static void Check_Answer(int Input) {
        boolean TryAgain = false;

        do {
            switch (Input) {
                case 'a': {
                    ++agressivePoints;
                    break;
                }
                case 'b': {
                    ++sadPoints;
                    break;
                }
                case 'c': {
                    ++meanPoints;
                    break;
                }
                case 'd': {
                    ++peacefullPoints;
                    break;
                }
                case 'e': {
                    ++happyPoints;
                }
                default: {
                    System.out.println("You have entered an invalid anwser. Please try      again");
                }
            }
        } while (TryAgain != true);
    }
}
}

但是当我这样做的时候,有一个错误。由于某些原因,第一个类中的变量不会与第二个类共享。

使用表达式
Main.aggressivePoints
访问这些全局变量


我鼓励您继续学习面向对象的设计,这样您就可以理解为什么在创建对象并保护对象中的数据时会更好。这被称为封装。

最好的方法是创建一个Variables类,其中包含所有变量,在Correct_Answer类中,您只需调用

Static Variables v;

在您希望调用的每个变量前面,只需执行c.VARIABLENAME

从其他类(如A)访问变量 要将变量调用到主类中,请使用(classA.varaibleName的实例) 在您的例子中,变量的对应类名是class A包含的

public static byte agressivePoints = 0;
通过创建类的实例,如

A inst =new A();
++inst.agressivePoints;
如何从Java中的不同类访问变量

如果另一个类的变量(或成员)是非静态的。您可以创建该类的实例(对象)并访问其变量,例如:

class Warrior
{
    private int strength;
    public int getStrength(){
        return this.strength;
    }
}

class TestRunner{
    public static void main(String[] args){
        Warrior w = new Warrior();
        w.getStrength();    //Access to strength of warrior via a Warrior object
    }     
}
class Warrior{
    public static final int SPEED;    //let say speed for all warriors are unified
}

class TestRunner{
    public static void main(String[] args){
        int speed = Warrior.SPEED;    //Access a class variable via the class name
    }     
}
如果该成员是公共成员,您可以直接访问它,如:

w.strength;
但是,当您了解封装和数据保护的概念时,您会意识到,通常我们会尝试将实例变量作为私有变量


至于静态成员,它们属于类而不是单个对象。因此,建议您通过类名访问它们,例如:

class Warrior
{
    private int strength;
    public int getStrength(){
        return this.strength;
    }
}

class TestRunner{
    public static void main(String[] args){
        Warrior w = new Warrior();
        w.getStrength();    //Access to strength of warrior via a Warrior object
    }     
}
class Warrior{
    public static final int SPEED;    //let say speed for all warriors are unified
}

class TestRunner{
    public static void main(String[] args){
        int speed = Warrior.SPEED;    //Access a class variable via the class name
    }     
}

++OtherClassName.aggressivePoints如果您正确缩进代码,您的代码将更易于阅读-您可能会发现缺少的
中断
。非常感谢!这确实奏效了!好的,安迪,我会接受你的建议并缩进我的代码。谢谢您的问题已得到回答,但为了将来参考,请将您看到的错误包括在内。我以为Java没有全局变量?@user3437460定义“全局变量”。这是您的回答。@user3437460我知道“全局变量”是什么意思。我问您这是什么意思,这样我就可以根据你对全局变量的解释回答你的问题。“我理解的”全局变量这个词是我们在C++语言中看到的全局变量。但据我所知,Java只有局部变量、类变量和实例变量。在Java中使用术语“全局变量”可能会产生误导。这些不是常量。这只是一个类名,他可以很容易地将其更改为其他名称。我没有说它们是常量,按照惯例,Java中只有常量的变量名都是大写的。