[英]access variables of one class in another class
在我的应用程序中,我有一个名为Monsters的类,该类从XML文件中读取数据。 这个Monster类调用另一个名为MonsterStats的类。
Monster使用XML文件中的数据在MonsterStats类中设置变量。
有没有办法在另一个类中使用这些变量?
Monster.java
public class Monster {
public MonsterStats monsterStats;
...processXML pseudo code...
monsterStats.name = xml.monsterName;
monsterStats.type = xml.monsterType;
monsterStats.race = xml.monsterRace;
...etc...
}
MonsterStats.java
public class MonsterStats {
//encounter info
public String name = "";
public String type = "";
public String race = "";
public String gender = "";
public String alignment = "";
public int age = 0;
}
someOtherClass.java
public class someOtherClass {
//how can I access the variables in MonsterStats
// that were just set by Monsters???
}
这是最基本的实现。
public class someOtherClass {
//how can I access the variables in MonsterStats
// that were just set by Monsters???
Monster mnstr = new Monster();
MonsterStats stats = mnsrt.getMonsterStats();
stats.getName();
............
}
public class Monster {
public MonsterStats monsterStats;
...processXML pseudo code...
monsterStats.name = xml.monsterName;
monsterStats.type = xml.monsterType;
monsterStats.race = xml.monsterRace;
...etc...
public MonsterStats getMonsterStats()
{
.....
return monsterStats;
}
}
public class MonsterStats {
//encounter info
public String name = "";
public String type = "";
public String race = "";
public String gender = "";
public String alignment = "";
public int age = 0;
public String getName()
{
return name;
}
}
我错过的东西太明显了吗? 这个怎么样?
public class someOtherClass {
private MonsterStats stats;
public someOtherClass(MonsterStats stats){
this.stats = stats;
}
public void myMethod(){
//Call this.stats and do what you want.
}
}
实际上,您正在混淆objects
和classes
。
我认为Monster
类的Object应该包含MonsterStats
以及更多内容。
因此,您只需extend
MonsterStats类:
public class Monster extends MonsterStats
{
public Monster(){}
public void parseXML()
{
//write your MonsterStats for this Monster from xml
}
//public String getName()
//{
// return this.name;
//}
}
您在MonsterStats
声明的所有方法都可以在Monster
类中使用。 如有必要,您可以覆盖它们。 您不必在Monster类中定义getName()
方法,因为您刚刚扩展了提供此方法的MonsterStats
类。
在someOtherClass
,首先必须创建对象
public class someOtherClass
{
Monster myFirstMonster = new Monster();
myFirstMonster.parseXML();
String name = myFirstMonster.getName();
}
这不是那么容易。 您无需在类中设置变量-为此,必须将变量声明为静态-但这不是一个好主意(就我了解您的代码而言)。
您现在拥有的是某个怪物(Monster类的对象)。 如果在someOtherClass的实例中有此对象,则可以访问所需的东西。
总而言之,我给您的印象是您在混合类和对象。
您能解释在someOtherClass中使用MonsterStats做什么吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.