java - 多态和抽象父类

标签 java polymorphism abstract

在我现在所做的实践中,我在层次结构中有 3 个类: Employee(抽象类) Worker 扩展 Employee 经理扩展员工

我还有一个使用这 3 个类的附加类:Factory

我现在必须构建一个方法,将 Employee e 添加到Employees 数组中。 属性:

_emps - Employee 类型的数组。 _numOfEmpes - 表示数组中雇员的数量。

这是我写的代码:

public boolean addEmployee(Employee e){
    if (this._numOfEmps<MAX_EMPS)
    {
        this._emps[this._numOfEmps]=e;
        return true;
    }
    return false;
}

问题是我认为按行:

this._emps[this._numOfEmps]=e;

我创建了一个别名对象数组,我不确定这是否是我必须做的。 我通常做的是:

this._emps[this._numOfEmps)=new Employee(e);

但是由于 Employee 类是抽象的,我不能这样做。

这是一个多态性的实践,所以我猜教授希望我们将Workers和Manager放入数组中,但我无法在方法中将Workers和Manager添加到数组中。

任何帮助都会很棒,

谢谢。

最佳答案

我认为创建一个引用对象数组是完全可以的。应该没有问题。

但是,如果您想创建副本,请检查clone方法,实现它并在addEmployee中使用它。

以下是如何实现 Cloneable 的示例 - http://www.jusfortechies.com/java/core-java/cloning.php

然后

this._emps[this._numOfEmps]=e.clone();
++this._numOfEmps;

关于java - 多态和抽象父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15986621/

相关文章:

java - 每秒而不是立即执行和显示图形

java - 是否可以从元数据_property_解码属性类

Java:为什么 JTable 不使用 TableCellEditor?

c++ - 不完整类型的标准容器

java - 为abstractCollection实现迭代器

java - html标签上的Jsoup属性删除

java - 不理解涉及 HashMap 的 Java 多态性示例

c++ - 使用基对象修改/访问派生类信息的问题设计

c# - 为什么在我实现抽象方法时 Visual Studio 不将其标记为错误?

java - 一个 ArrayList 中的多个对象类型