java - 显示子类的内容
问题描述
我是 Java 新手,非常喜欢这个挑战。目前我正在尝试构建一个包含 3 个类别(战士、法师、胭脂)的游戏,玩家可以从中进行选择。因此,我为基础(健康、法力、耐力)和战士、法师和胭脂的子类创建了一个构造函数。
我想为玩家打印选择,但不幸的是它不起作用。也许有人可以告诉我正确的方法。
这是超级班。不要被德语符号弄糊涂了。:D
public class Klassen {
String Klasse;
int Vitalitat; //Health
int Mana;
int Ausdauer; //Stamina
Klassen(String k, int v, int m, int a) {
Klasse = k;
Vitalitat = v;
Mana = m;
Ausdauer = a;
}
String getKlasse() {return Klasse;} //choice of classes
int getVit() {return Vitalitat;}
int getMana() {return Mana;}
int getAusdauer() {return Ausdauer;}
void setVit(int v) {Vitalitat =v;}
void setMana(int m) {Mana = m;}
void setAusdauer(int a) {Ausdauer = a;}
void setKlase(String k) {Klasse = k;}
void showBasic() {
System.out.println("Vitalitaet: " + Vitalitat);
System.out.println("Mana: " + Mana);
System.out.println("Ausdauer " + Ausdauer);
}
这里是一个子类的例子:
public class Krieger extends Klassen {
int Starke;
Krieger(int v, int m, int a, int s) {
super("Krieger", v, m, a);
Starke = s;
}
int getStarke() {return Starke;}
void setStarke(int s) {Starke = s;}
void showStarke() {
System.out.println("Starke: " + Starke);
}
}
下一步是创建一个数组来保存所有三个选项:
Klassen[] fillKlassen() { //filling the array
Klassen[] Auswahl = new Klassen[3];
Auswahl[0] = new Krieger(0,0,0,0); //Warrior
Auswahl[1] = new Magier(0,0,0,0); //Mage
Auswahl[2] = new Waldlaufer(0,0,0,0); //Rouge
return Auswahl;
}
最后一步应该是创建一个打印数组内容的方法。我想类似于:
class KlassenAuswahl {
Klassen[] fillKlassen() {
Klassen[] Auswahl = new Klassen[3];
Auswahl[0] = new Krieger(0,0,0,0); // Eclipse can't use that reference and wants me to change it to Klassen(int,int,int)
Auswahl[1] = new Magier(0,0,0,0);
Auswahl[2] = new Waldlaufer(0,0,0,0);
return Auswahl;
}
void showKlassen() {
for(int i = 0; i < fillKlassen().length; i++) {
System.out.println(fillKlassen()[i].getKlasse());
}
}
主要目标是在我的 main() 方法中实现此方法,但这将无法正常工作。有人可以帮我吗?
编辑:主要问题似乎是我得到了一个 nullpointer.exception。我猜这可能是空数组的结果?接下来是我无法在 main() 中实现 showAuswahl() 可能是因为它在构造函数类中。因此我需要在它之外创建一个新类。但是在构造函数之外我不能使用我的子类......
干杯无耻无耻
解决方案
我得到了解决方案。需要将我的子类更改为静态 :)
推荐阅读
- javascript - 当使用一个字符串从另一个函数调用一个函数时,人们会怎么做呢?
- python - TensorFlow cuda,cudart64_101.dll 未找到
- jenkins - 我可以在 yaml 配置文件中使用 Jenkins 变量吗?
- git - 如何在 VS Code 中使用 BitBucket?
- c++ - 带头的类中的方法和参数声明问题
- python-3.x - 为什么在 tkinter 窗口中禁用画布滚动条?
- rust - 使用 Rust openssl 导出 EC 公钥
- javascript - 来自外部函数的 clearInterval (Vanilla Javascript)
- java - EL1057E: 没有在上下文中注册 bean 解析器来解析对 bean 的访问
- c++ - C++ 自定义成员到成员“指针”/访问