开关中的新实例
New instance in switch
我目前正在学习 java 和 oop。
当我必须根据条件实例化一个新对象时遇到问题。每个对象都具有相同的类型。
根据情况,我想传递我的对象 playerAnimal 和 animalSauvage,以便让它们战斗。 (有点像玩家遇到凶猛的宝可梦)
switch (animalChosen) {
case "Chien":
Animaux playerChien = new Chien(animalName);
playerChien.displayStat();
break;
case "Chat":
Animaux playerChat = new Chat(animalName);
playerChat.displayStat();
break;
case "Furet":
Animaux playerFuret = new Furet(animalName);
playerFuret.displayStat();
break;
default
break;
}
switch (randAnimalSauvage()) {
case "Chien":
Animaux chienSauvage = new Chien();
chienSauvage.displayStat();
break;
case "Chat":
Animaux chatSauvage = new Chat();
chatSauvage.displayStat();
break;
case "Furet":
Animaux furetSauvage = new Furet();
furetSauvage.displayStat();
break;
default:
break;
}
Fight letsFight = new Fight(Animaux playerAnimal, Animaux animalSauvage);
letsFight.battle(Animaux playerAnimal, Animaux animalSauvage);
PS:我是法国人,不要介意变量名的含义;)
提前致谢
Animaux chosenPlayerAnimal;
switch (animalChosen) {
case "Chien":
chosenPlayerAnimal = new Chien(animalName);
break;
case "Chat":
chosenPlayerAnimal = new Chat(animalName);
break;
case "Furet":
chosenPlayerAnimal = new Furet(animalName);
break;
default:
chosenPlayerAnimal = new SomeDefaultAnimal(animalName);
break;
}
Animaux animalSauvage;
switch (randAnimalSauvage()) {
case "Chien":
animalSauvage = new Chien();
break;
case "Chat":
animalSauvage = new Chat();
break;
case "Furet":
animalSauvage = new Furet();
break;
default:
animalSauvage = SomeDefaultAnimal();
break;
}
chosenPlayerAnimal.displayStat();
animalSauvage.displayStat();
Fight letsFight = new Fight(chosenPlayerAnimal, animalSauvage);
letsFight.battle(chosenPlayerAnimal, animalSauvage);
我真的不明白你为什么要用你已经在构造函数中提供的动物调用 Fight.battle()
。
你可以做到
Animal animal= null;
switch (animalChosen) {
case "Chien":
animal = new Chien(animalName);
break;
case "Chat":
animal = new Chat(animalName);
break;
case "Furet":
animal = new Furet(animalName);
break;
default
break;
}
animal.displayStat();
这是可行的,因为(我假设,这就是需要的情况)所有 Chien
、Chat
和 Furet
都是 Animal
的子类(或实现接口,无论它是什么)。
敌方动物也一样。由于这两种情况都相同,因此您可以创建一个函数。
private Animal byName(String animalName) {
// same code as above, returning the animal
return animal;
}
然后会这样调用:
Animal playerAnimal = byName(playerChoice);
Animal savageAnimal = byName(randAnimalSauvage());
Fight letsFight = new Fight(playerAnimal, savageAnimal);
letsFight.battle(playerAnimal, savageAnimal);
我目前正在学习 java 和 oop。 当我必须根据条件实例化一个新对象时遇到问题。每个对象都具有相同的类型。 根据情况,我想传递我的对象 playerAnimal 和 animalSauvage,以便让它们战斗。 (有点像玩家遇到凶猛的宝可梦)
switch (animalChosen) {
case "Chien":
Animaux playerChien = new Chien(animalName);
playerChien.displayStat();
break;
case "Chat":
Animaux playerChat = new Chat(animalName);
playerChat.displayStat();
break;
case "Furet":
Animaux playerFuret = new Furet(animalName);
playerFuret.displayStat();
break;
default
break;
}
switch (randAnimalSauvage()) {
case "Chien":
Animaux chienSauvage = new Chien();
chienSauvage.displayStat();
break;
case "Chat":
Animaux chatSauvage = new Chat();
chatSauvage.displayStat();
break;
case "Furet":
Animaux furetSauvage = new Furet();
furetSauvage.displayStat();
break;
default:
break;
}
Fight letsFight = new Fight(Animaux playerAnimal, Animaux animalSauvage);
letsFight.battle(Animaux playerAnimal, Animaux animalSauvage);
PS:我是法国人,不要介意变量名的含义;)
提前致谢
Animaux chosenPlayerAnimal;
switch (animalChosen) {
case "Chien":
chosenPlayerAnimal = new Chien(animalName);
break;
case "Chat":
chosenPlayerAnimal = new Chat(animalName);
break;
case "Furet":
chosenPlayerAnimal = new Furet(animalName);
break;
default:
chosenPlayerAnimal = new SomeDefaultAnimal(animalName);
break;
}
Animaux animalSauvage;
switch (randAnimalSauvage()) {
case "Chien":
animalSauvage = new Chien();
break;
case "Chat":
animalSauvage = new Chat();
break;
case "Furet":
animalSauvage = new Furet();
break;
default:
animalSauvage = SomeDefaultAnimal();
break;
}
chosenPlayerAnimal.displayStat();
animalSauvage.displayStat();
Fight letsFight = new Fight(chosenPlayerAnimal, animalSauvage);
letsFight.battle(chosenPlayerAnimal, animalSauvage);
我真的不明白你为什么要用你已经在构造函数中提供的动物调用 Fight.battle()
。
你可以做到
Animal animal= null;
switch (animalChosen) {
case "Chien":
animal = new Chien(animalName);
break;
case "Chat":
animal = new Chat(animalName);
break;
case "Furet":
animal = new Furet(animalName);
break;
default
break;
}
animal.displayStat();
这是可行的,因为(我假设,这就是需要的情况)所有 Chien
、Chat
和 Furet
都是 Animal
的子类(或实现接口,无论它是什么)。
敌方动物也一样。由于这两种情况都相同,因此您可以创建一个函数。
private Animal byName(String animalName) {
// same code as above, returning the animal
return animal;
}
然后会这样调用:
Animal playerAnimal = byName(playerChoice);
Animal savageAnimal = byName(randAnimalSauvage());
Fight letsFight = new Fight(playerAnimal, savageAnimal);
letsFight.battle(playerAnimal, savageAnimal);