Ich erstellte ein Testprojekt, aber ich stieß auf etwas, das ich nicht herausfinden kann.Java Calling Constructor
Ich versuche Monster in FightManager aufzurufen. Ich mag Monster Variablen (name
, health
, damage
und defense
), um gleich, was auch immer Monster randomisiert wird (WolfMonster
oder GoblinMonster
)
Vorher hatte ich nur ein Monster, und ich schaffte es zu tun, aber jetzt, wo gibt es 2 Monster Wie kann ich den Variablen einen anderen Wert geben, wenn ein anderes Monster ausgewählt wird?
public class Units {
int health;
int damage;
int defense;
String name;
public boolean isAlive(){
if(health >= 1){
return true;
}else{
return false;
}
}
}
public class Monster extends Units{
public Monster(String name,int health,int damage,int defense){
this.name = name;
this.health = health;
this.damage = damage;
this.defense = defense;
}
}
public class GoblinMonster extends Monster {
public GoblinMonster(String name, int health, int damage, int defense) {
super("Goblin",50,5,6);
this.name = name;
this.health = health;
this.damage = damage;
this.defense = defense;
}
}
public class WolfMonster extends Monster {
public WolfMonster(String name, int health, int damage, int defense) {
super("Wolf",50,5,6);
this.name = name;
this.health = health;
this.damage = damage;
this.defense = defense;
}
}
public class FightManager {
GameManager manage = new GameManager();
Player player = new Player("Player",100,10,5);
GoblinMonster gobli = new GoblinMonster("Goblin", 40, 7, 4);
WolfMonster wolf = new WolfMonster("Wolf",50,9,6);
boolean myTurn = true;
....
Ich möchte wissen, wie man einen Wert von Monster zuweisen je nachdem, welche Monster erzeugt wird.
Es ist nicht klar, was Sie verlangen. Könnten Sie bitte angeben, was Sie mit Wert meinen? –
Ich sehe hier keine Notwendigkeit für zwei Unterklassen. Sie haben genau die gleichen Felder und das gleiche Verhalten (keine überschriebene Methode). Außerdem machen Ihre Konstruktoren keinen Sinn. Sie initialisieren jedes Feld zweimal: einmal im Basiskonstruktor und einmal im Unterklassenkonstruktor. Und Sie übergeben einen fest codierten Namen aus dem Konstruktor der Unterklasse, überschreiben ihn jedoch unmittelbar danach mit dem übergebenen Namen. –
Nicht sicher, was das Problem ist. Es scheint, dass Sie verwirrt sind über [polymorphes Verhalten] (https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html). –