java - 打印包含继承成员的数组?

标签 java arrays inheritance

我的代码有这个问题。 我创建一个具有两个实例变量的 Employee 类:

private String name, department;

然后我创建了另一个名为 Tradesman 的类,它是 Employee 的扩展,但有一个额外的实例变量:

private String trade;

现在我所做的是创建一个 print() 方法,该方法将:A) 在 Employee 类中,打印姓名部门 。 B) 在 Employee 中使用的相同方法将在 Tradesman 中创建(从而覆盖它),该方法将打印额外的一个元素,即交易。现在的问题是,我创建了另一个名为 Staff 的类,它将包含一些元素的 Object 类型的数组,并且我必须实现 hire() 方法、fire() 方法和一个 put() 方法将打印整个数组。直到打印的那一刻,一切都是酷而邪恶的。我正在努力解决如何打印它,因为每个类都有 print() 方法,但它必须取决于类型...如果我将该方法转换为Employee 我将失去 Tradesman Class 的 trade 元素,例如:

void put(){
    for (Object a:objArray){
        ((Employee)a).print();
    }
}

这是错误的。因为如果我雇用一名商人,此方法将不会打印交易。如何处理这个问题呢?提前致谢!干杯^^

最佳答案

"Cause if I hire a Tradesman, this method won't print the Trade"

你错了,它会的。如果Employee实际上是一个Tradesman ,调用 print()会打电话Tradesman.print() 。如果它被重写,那么将调用重写方法。如果你的所有数组对象都是 Employee ,只需使用 Employee[]而不是Object[]所以你不必做那些无用的转换。

"I want to implement an array of both Tradesman and Employee... One array that will contain both, Tradesman and Employee combined."

Employee[]将同时持有 TradesmanEmployee 。同样在 Java 中,我建议您使用 List ( List<Employee> 在你的例子中),它比数组更易于管理。

关于java - 打印包含继承成员的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19770279/

相关文章:

java - OpenCV:在没有校准图像的情况下估计径向失真

python - 使用列表中的掩码值掩蔽 python 二维数组

c++ - 数组的行为不符合我的预期

java - 从父抽象类调用 getter 方法

java - 使用鼠标单击在 JLabel 中拖动和移动图片

java - 删除文件中的重复数据

java - 当子类和父类都是内部类时,Java 中的继承行为

c++ - 点云库的多重继承与单继承限制

java - 如何在 java 或 c# 中强制执行 ddd 聚合?

java - 获取组件类型的数组Class