java - 在子类中使用父类构造函数的困难

标签 java oop inheritance extends

我有一个 Contractor 子类,它扩展了其父类 Staff

    Test Class

    Date macHireDate = new Date(2016, 1, 5);
    Staff mac = new Staff("Mac", 66222222, macHireDate);
    System.out.println(mac);

    Staff bob = new Contractor("Bob", new Date(2012,10,10), new Date(2013,4,11))
    System.out.println(bob);

我希望输出为 Bob (ID: None) ... 但我不知道如何使 ID 成为字符串。我不想更改测试类中的任何内容

public class Contractor extends Staff {
private Date contractEnds;

这是我的承包商类构造函数

public Contractor(String name, Date hireDate, long employementID, Date contractEnds) {
    super(name, employementID, hireDate);
    this.contractEnds = contractEnds;
}

并且它正在延伸

public Staff(String name, long employementID, Date hireDate) {
super();
this.name = name;
this.hireDate = hireDate;
this.employementID = employementID;
}

Bob 只有一个字符串、日期、日期。因此,我在不更改测试类中的任何内容的情况下如何使 bob ID“无”时遇到困难。

最佳答案

如果将Contractor的构造函数更改为

public Contractor(String name, Date hireDate, Date contractEnds) {
    super(name, 0, hireDate);
    this.contractEnds = contractEnds;
}

然后还更改 StafftoString 方法,以便如果 employmentID 为 0,则它将打印 None

关于java - 在子类中使用父类构造函数的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41112556/

相关文章:

java - Scala 类替换

java - LibGDX/Java 奇怪的行为

java - 尝试使用随机生成器设置简单的加法序列

java - 为什么可以在没有实例的情况下调用方法?

java - 设计可以在运行时创建类实例的应用程序

c# - 泛型还是只使用重载?

java - 如何在数据库中保存层次结构类?

java - 在 Java 中使用 toString 和队列

java - Java 中重写的方法可见性

c++ - 继承和模板,一种奇怪的行为