从另一个类访问对象?

时间:2014-09-22 17:35:48

标签: java object

我目前正在学习java。我正在为实验目的制作像hearthstone这样的小型纸牌游戏:)

但我遇到了一个问题。我创造了所有的卡片" minions"在另一个班级,以保持这一切看起来很好。

问题是我无法从主类等任何其他类访问它们。

这是小兵班:

  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 个答案:

答案 0 :(得分:3)

有关您的代码的一些提示或建议可以帮助您:

<强> 1 即可。尝试定义你的setter和getter用于封装目的,并且可以访问每个字段。

例如:

private int ID;

getter方法

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

setter方法

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

<强> 2 即可。最好不要使用displayMinionData(),而是覆盖toString方法

例如,如果你的变量是:

   private String came;
   private String city;

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

我不确定你通过main方法访问solider是什么:

但你有这个

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

正如我告诉你的那样

  

<强> 1 即可。您可以在控制台上使用重写的 toString 打印输出整个信息

     

<强> 2 即可。您可以使用getters

提取士兵变量的每个部分      

第3 即可。您可以使用setter

更新士兵变量的每个部分

toString示例:

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

获取者的样本:

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

setter的样本:

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

答案 1 :(得分:0)

如果您想访问各个字段(例如namehealthattack等),则必须为其添加公共访问权限。通过将它们声明为私有,您只能在Minion类中看到它们。这不是一件坏事!保持字段私有的最佳做法,但分别提供公共getter / setter来获取或设置值。这可以确保除了您编写的特定方法之外,不能更改它们。

要编写getter / setter,请为需要公开可见性的每个字段创建两个方法:

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

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

然后,您可以创建一个Minion(就像您一样)并执行System.out.println(soldier.getName());

之类的操作

(顺便说一下,它在Java中用来大写类(如MinionMinionTracker)和camelCase对象(如soldierminionName)的约定