簡體   English   中英

如何從Java中的不同類訪問變量?

[英]How do you access variables from different classes in 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);
    }
}
}

但是,當我這樣做時,有一個錯誤。 出於某種原因,第一類中的變量不與第二類共享。

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

使用表達式Main.aggressivePoints來訪問這些全局變量。

我鼓勵您繼續學習面向對象的設計,這樣您就可以理解為什么在創建對象並保護其中的數據時會更好。 它被稱為封裝。

要從其他類訪問變量,請說A將變量調用到主類中使用(classA的實例).varaibleName在您的情況下,對應的變量類名稱說類A包含

public static byte agressivePoints = 0;

通過創建類的實例

A inst =new A();
++inst.agressivePoints;

執行此操作的最佳方法是使用Variables類,其中包含所有變量,而在Correct_Answer類中,您可以簡單地調用

Static Variables v;

你希望調用的每個變量都面向c.VARIABLENAME;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM