Java继承:曲棍球队类中的曲棍球比赛

Java继承:曲棍球队类中的曲棍球比赛,java,inheritance,subclass,superclass,Java,Inheritance,Subclass,Superclass,我试着用一个曲棍球队的例子来练习继承 public class HockeyPlayer { private String firstName; private String lastName; private String teamName; public HockeyPlayer(String first, String last) { firstname = first; lastName = last; }

我试着用一个曲棍球队的例子来练习继承

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);
    }
}

正如你所看到的,我也包括曲棍球运动员互相打架。有没有办法让两名曲棍球运动员在曲棍球队比赛中互相厮杀?

既然这个问题的重点是关于多态性,我将首先尝试给出一些好的建议。(我是说试试看)

当一个类从另一个类扩展时,您是说classA是classB。在这种情况下,我不相信曲棍球队就是曲棍球运动员。多态性可以通过使用抽象类并让团队从中扩展来使用,例如Spokane酋长从Hockey Team中扩展并重写他们的方法。SpokaneCheifs将是他们自己的类,在您的情况下,您将在运行时创建每个团队

如果您希望两个团队在“战斗”期间彼此有联系,您可以让战斗方法接受HockeyTeam对象,例如teamA.fight(teamB)。这样,teamA就可以访问teamB,与他们的公众得分者/二传手“战斗”,我不确定你希望他们如何战斗,通常使用RNG来决定胜利者和任何损失

另外,我喜欢你使用DVC的方式,但除非你知道会有这样的情况,你会使用一个空名字的播放器,或者在运行时用setter创建它;最好删除它并使用您的EVC。如果你有一个显式的值构造函数,Java不会创建一个默认值构造函数,除非你为它指定。

我试图让曲棍球运动员互相打架,当我去打曲棍球,一场愚蠢的比赛爆发时,我讨厌这样。
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();
    }
}