我目前正在学习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);
}
}
我想要访问主要班级的那名士兵。但我不知道该怎么做。任何答案都会非常有用!!
答案 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)
如果您想访问各个字段(例如name
,health
,attack
等),则必须为其添加公共访问权限。通过将它们声明为私有,您只能在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中用来大写类(如Minion
和MinionTracker
)和camelCase对象(如soldier
或minionName
)的约定