Java继承: Hockey fights in the HockeyTeam class

标签 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 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 类(class)中互相争斗?

最佳答案

由于这个问题的要点是关于多态性的,所以我会首先尝试给出好的建议。 (我的意思是尝试)。

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

如果您希望两支球队在“打架”期间相互联系,您可以让 Fight 方法接受 HockeyTeam 对象,例如 teamA.fight(teamB)。这样,teamA 就可以访问 teamB 与他们的公共(public) getter/setter 进行“战斗”,我不确定您希望他们如何战斗,通常使用 RNG 来决定获胜者和任何损害。

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

关于Java继承: Hockey fights in the HockeyTeam class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60481125/

相关文章:

java - Tomcat 服务器和 HTTP 客户端接受过期的自签名证书

java - 线程 :Wait() and notify()

java - 子类需要设置父类的唯一对象字段?

NHibernate 左外连接子类

iOS:在 TableView 行中子类化 UIView

scala - 方法参数中具有抽象类型的特征

java.lang.NoSuchFieldError : DEF_CONTENT_CHARSET from linux terminal with twilio 错误

java - 使用 XmlPullParser 时 DOCTYPE 给出 'unexpected' 错误

c# - 使用派生类的实例时如何序列化基类?

javascript - 原型(prototype)上的属性受到不同的影响