У меня есть общий класс под названием Hero и три подкласса, который расширяет его: Mage, Warrior, Ranger. Класс Hero имеет здоровье и силу, и каждый подкласс имеет дополнительные атрибуты.Как отнести подкласс к суперклассу [невозможно преобразовать]?
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 = (Integer) объект;». Поэтому я смущен, почему мой воин, который является героем, не может быть брошен в объект героя.
Класс 'Warrior' должен расшириться 'Here' –
введите код этого класса:' Mage', 'Warrior',' Ranger' –
* «мой воин, который не может быть героем, не попадает в объект героя» * You у вас нет воина, у вас есть произвольный экземпляр героя, и вы не можете и не должны пытаться выполнить подавление. Если вы не воин, тогда создайте его, а не создайте экземпляр героя и бросьте его. – Tom