我有一個叫做英雄的普通班級和三個擴展它的子類:法師,戰士,遊俠。英雄類有健康和力量,每個子類都有其他屬性。如何將子類轉換爲超類[無法轉換]?
public class Warrior extends Hero {
private int armor;
public Warrior(int health, int strength, int armor) {
super(health,strength);
this.armor = armor;
}
}
public class Hero {
private int health;
private int strength;
public Hero(int health, int strength) {
this.health = health;
this.strength = strength;
}
//Getters
public int getHealth() {
return health;
}
public int strength() {
return strength;
}
//Setters
public void takeDamage(Hero player, int n) {
player.health = player.health-n;
}
public void healDamage(Hero player, int n) {
player.health = player.health+n;
}
}
,並在主類,我想提出兩個英雄的對象,當用戶選擇他們想成爲什麼課我想創建一個英雄職業,並投它作爲一個英雄等等它也會有英雄屬性和方法。
public static void main(String[] args) {
Hero hero1 = new Hero(100,10);
Hero hero2 = new Hero(100,10);
//Players select the class
Scanner scanner = new Scanner(System.in);
System.out.println("Player select a class: Warrior, Mage, Ranger ");
String p = scanner.next();
switch (p) {
case "Warrior": Warrior h1 = (Hero)hero1; //this doesn't work
break;
case "Mage":
break;
case "Ranger":
break;
}
}
我環顧四周,我在示例樣的瞭解一個對象怎麼可能是一個整數,你可以做「INT I =(整數)對象;」。所以我很困惑,爲什麼我的英雄戰士不能被鑄造成英雄對象。
類'戰士'應該延伸'這裏' –
把這個類的代碼:'法師','戰士','遊俠' –
*「我的勇士是英雄不能鑄造到英雄對象」*你沒有戰士,你有一個任意的英雄實例,你不能也不應該嘗試執行一個沮喪。如果你不想成爲一名戰士,那麼創建一個,而不是創建一個英雄的實例並投射。 – Tom