Ниже приведен фрагмент моего кода, и я не могу решить, является ли он примером полиморфизма.
Иерархия классов 1
В моем классе Player (это подкласс Character) есть метод showStats ().
public String showStats(){ // Displays all current stats regarding the player.
String stats = "<html><br>Name: "+ getName()+ "<br>Type: "+ getCharacterType() + "<br>Health: "+ getHealth() +"<br>Weapon Equipped: "+ getWeaponEquippedName()+"<br>Miles Walked: "+getWalked()+"<br>"+showInventory()+"<br>Level Completed: "+getLevelCompleted();
return stats;
}
Этот метод переопределен в классах Мага и Воина из-за исключительной статистики, которой могли бы обладать только Воины и Маги, если они принадлежат к этому типу (Воины имеют атрибут очков силы, а Маги имеют атрибут очков кражи) ,
Класс Волшебника:
public String showStats(){ // Overridden method that shows all player stats including the number of steal points.
String stats = super.showStats()+"<br>Steal Points: "+getMana()+"</html>";
return stats; }
Класс Воина:
public String showStats(){ // Overridden method that shows all player stats including the number of Power Points if they are a Warrior.
String stats = super.showStats()+"<br>Power Points: "+getMana()+"</html>";
return stats;
}
В классе Battle я вызываю метод showStats (), и вывод не известен, пока Пользователь выбрал, какого персонажа они будут играть sh. Я просто хотел быть уверен, что это пример полиморфизма, так как выбранный символ не известен, пока программа не будет скомпилирована, а затем выбрана пользователем (т. Е. Принцип замещения и Late Dynami c Binding).
public static void gameMenu(Player player, int choice, String name)throws FileNotFoundException, IOException, ClassNotFoundException { // Game menu method is for displaying all options (Play game, view game rules, quit) to the user when the game runs.
//Substitution principle applied to the player object depending upon what character the player wishes to select.
if (choice == 3) {
player = new Attack_Warrior();
}
else if (choice == 4) {
player = new Defensive_Warrior();
}
else if (choice == 5) {
player = new Attack_Magician();
}
else if (choice == 6) {
player = new Defensive_Magician();
}
else{
System.out.println("Error. Try again.");
play(player); // If the user enters an invalid input, the method loops and asks the player to re-enter their input.
}
Большое спасибо за ваше время, и я с нетерпением жду вашего ответа, Алекс