2014-09-22 114 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