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

时间:2016-02-02 18:54:41

标签: 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 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);
    }
}
}

但是当我这样做时,会出现错误。出于某种原因,第一类的变量不与第二类共享。

4 个答案:

答案 0 :(得分:3)

  

如何从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
    }     
}

如果该成员是公开的,您可以直接访问它,如:

w.strength;

但是当你学习封装和数据保护的概念时,你会意识到我们通常会尝试将实例变量设为私有。

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

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
    }     
}

答案 1 :(得分:1)

使用表达式<img data-ng-src="C:/var/vci/images/fleetImages/{{img.imageName}}" data-ng-type="{{img.imageType}}"/> 访问这些全局变量。

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

答案 2 :(得分:0)

要从其他类访问变量,请说A. 将变量调用到主类使用(classA的实例).varaibleName 在您的情况下,变量的相应类名称表示类A包含

<script type="text/javascript">
    $(document).ready(function() {
        $(window).keydown(function(event){
            if(event.target.tagName != 'INPUT') {
                if(event.keyCode == 13) {
                    event.preventDefault();
                    return false;
                }
            }
        });
    });
</script>

通过创建类的实例,如

public static byte agressivePoints = 0;

答案 3 :(得分:-1)

执行此操作的最佳方法是使用Variables类,其中包含所有变量,而在Correct_Answer类中,您只需调用

Static Variables v;

并且你想要调用的每个变量的前面都是c.VARIABLENAME;