Java Наследование: хоккейные бои в классе HockeyTeam - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь попрактиковаться в наследовании на примере хоккейной команды

public class HockeyPlayer {
    private String firstName;
    private String lastName;
    private String teamName;

    public HockeyPlayer(String first, String last) {
        firstname = first;
        lastName = last;
    }

    public void print() {
        System.out.print(firstName + " " + lastName);
    }
}
public class HockeyTeam extends HockeyPlayer {
    private String teamName;
    public HockeyTeam(String first, String last, String s) {
        super(first, last);
        teamName = s;
    }
    public String getTeamName() {
        return teamName;
    }
    public void fight() {
        super.print();
        System.out.print(" is fighting against ");
    }
}
public class HockeyGame {
    public static void main(String[] args) {

        HockeyTeam team1Player1 = new HockeyTeam("Sidney","Crosby","Pittsburgh Penguins");
        HockeyTeam team2Player1 = new HockeyTeam("Jack","Campbell","Toronto Maple Leafs");

        team1Player2.fight();
    }
}

Как видите, я также включаю хоккеистов, сражающихся друг с другом. Есть ли способ заставить двух хоккеистов сражаться друг с другом в классе HockeyTeam?

1 Ответ

1 голос
/ 02 марта 2020

Поскольку основной вопрос этого вопроса касается полиморфизма, я постараюсь дать хороший совет по этому вопросу. (Я имею в виду попробовать).

Когда один класс расширяется от другого, вы говорите, что classA - это classB. В этом случае я не верю, что хоккейная команда - хоккеист. Полиморфизм можно использовать, используя абстрактные классы и используя команды, выходящие из них, такие как Spokane Chiefs, выходящие из хоккейной команды и переопределяющие их методы. SpokaneCheifs будет их собственным классом, в вашем случае вы создаете каждую команду во время выполнения.

Если вы хотите, чтобы две команды имели связь друг с другом во время «боев», вы можете использовать метод боя в объект HockeyTeam, такой как teamA.fight (teamB). Таким образом, teamA получит доступ к teamB, чтобы «сражаться» с их публичными c добытчиками / сеттерами, я не уверен, как вы хотите, чтобы они сражались, это обычное использование RNG для определения победителя и любых убытков.

Также мне нравится, как вы использовали DV C, но если вы не знаете, будет случай, когда вы будете использовать плеер с пустым именем или создадите его во время выполнения с помощью сеттеров; Лучше удалить его и использовать свои EVC. Если у вас есть конструктор явных значений, Java не создаст конструктор значений по умолчанию, если вы не укажете для него.

...