2014-09-22 175 views
-1

我目前正在學習java。而即時通訊製作一個小型的紙牌遊戲,如心形石爲實驗目的:)從另一個類訪問對象?

但我遇到了問題。我在另一個班級製作了所有卡片/「僕從」以保持這一切看起來不錯。

的問題是,我不能像從主類其他類訪問他們..

這裏是爪牙類:

package project.main; 

public class Minion { 

    private int ID; 
    private String name; 
    private String type; 
    private String disc; 
    private int health; 
    private int attack; 
    private int cost; 


    public Minion(int minionID, String minionName, String minionType, String minionDisc, int minionHealth, int minionAttack, int minionCost) 
    { 
     ID = minionID; 
     name = minionName; 
     type = minionType; 
     disc = minionDisc; 
     health = minionHealth; 
     attack = minionAttack; 
     cost = minionCost; 

    } 

    public void displayMinionData() { 

     System.out.println("ID: " + ID); 
     System.out.println("Name: " + name); 
     System.out.println("Type: " + type); 
     System.out.println("Discription: " + disc); 
     System.out.println("Health: " + health); 
     System.out.println("Attack: " + attack); 
     System.out.println("Cost: " + cost); 


     } 

    } 

這裏是MinionTracker類(當我創建對象):

package project.main; 

public class MinionTracker { 

    public static void main(String[] args) { 

     Minion Soldier = new Minion(0, "Soldier", "Human", "The First minion", 2, 1, 1); 

    } 

} 

而且我想訪問那個在主類上的士兵。但我不知道如何。任何答案都會非常有幫助!

+2

簡單'Soldier.displayMinionData();'insid你的'主'? – pzaenger 2014-09-22 17:40:59

+1

以大寫字母開頭的變量名是一種不好的做法。 – Dici 2014-09-22 17:47:25

+0

@zuaxis是否瞭解如何解決您的問題? – 2014-09-22 21:46:59

回答

3

你的代碼的一些提示或建議,可幫助您:

。嘗試爲封裝目的定義您的setter和getter,並有權訪問每個字段。

例如:

private int ID; 

getter方法

public int getID(){ 
     return this.ID; 
    } 

setter方法

public void setID(int newID){ 
     this.ID = newID; 
} 

。而不必displayMinionData()的,它是重寫toString方法

例如,如果你的變量是很好的做法:

private String came; 
    private String city; 

    public String toString(){ 
     return name + " " + city; 
    } 

我不知道用什麼你訪問在main方法的士兵:

但你有這樣的

Minion soldier = new Minion(0, "Soldier", "Human", "The First minion", 2, 1, 1); 

正如我告訴你

。你可以打印通過覆蓋控制檯

的toString對整個信息。可以通過使用干將

提取士兵變量的每個部分。

System.out.print("Info about the current soldier is " + soldier.toString()); 

樣品爲吸氣劑::

System.out.println("ID:" + soldier .getID()): 

樣品制定者:

可以 通過使用設置器

樣品的toString更新士兵變量的每個部分

int newID = 123456789; 
    soldier.setID(newID); 
    System.out.println("The new id of current soldier is " + soldier.getID()): 
0

如果你想訪問單個字段(如name,health,attack等),你將不得不爲他們添加公共訪問權限。通過聲明它們是私人的,你只能在Minion類中看到它們。這不是一件壞事!最好的做法是保持字段不公開,但分別提供公共getter/setter來獲取或設置值。這可以確保除了您編寫的特定方法以外不能更改它們。

要編寫一個getter/setter方法,做出這需要公衆的知名度每場兩個方法:

public int getID(){ 
    return this.ID; 
} 

public void setID(int ID){ 
    this.ID = ID; 
} 

然後,您可以創建一個僕從(你有),並做一些像System.out.println(soldier.getName());

(順便說一下,這是慣例在Java中利用類(比如MinionMinionTracker)和駝峯對象(如soldierminionName

+0

就像我在製作那個士兵對象之前所做的一樣。我如何將所有這些變量作爲一個整體放在一起?你能否就你如何製作一個物體做一個完整的例子? @Daniel – Zuaxis 2014-09-22 18:14:37

+0

你的意思是'把所有這些變量放在一起作爲一個到底'?他們已經在一起,在你的僕從班裏面。 – 2014-09-22 18:33:00

+0

林不知道如何把它。我很新。但是現在我做了Minion的制定者和獲得者,我想創建一個帶有自己的ID,名字等的新的minion實例。我不知道如何把它放在@Daniel – Zuaxis 2014-09-22 18:37:21