java - 传递相同类型的类的参数有什么意义?

标签 java inheritance constructor

我看到了一个试图解释 Java 继承的例子。作为基类的 Employee 类具有三个实例变量和三个构造函数。如下:

public class Employee{
    private String name;
    private int id;

    public Employee(){

        name = " No Name!";
        id = 00100;
    }

    public Employee(String n, int i){

        name = n;
        id = i;
    }

    public Employee (Employee originalObject){

        name = originalObject.name;
        id = originalObject.id;

    }

我的问题是:第三个构造函数有什么意义?以及它如何接受与我们仍在研究的类具有相同类型 Employee 的参数?该程序已经有一个空的构造函数和另一个为 name 传递 String 和为 id 传递 int 的构造函数,那么为什么还有一个额外的构造函数呢不外乎前两个构造函数吗?

最佳答案

看起来第三个构造函数是为了对现有的 Employee 对象进行复制

你可能会做同样的事情:

new Employee(orig.getName(), orig.getId());

但这假定每个属性都有“获取”方法。像那样实现一个构造函数,然后调用:

new Employee(orig);

然后,如果 Employee 的属性需要更改,您只需更改一个地方的复制构造函数即可。

关于java - 传递相同类型的类的参数有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251098/

相关文章:

c++ - 构造函数中这个奇怪的冒号成员 (": ") 语法是什么?

java - 无法应用 ContactEntry 中的 ContactEntry()

java - 使用 Selenium IE webdriver 和 JAVA 识别特定字符串后面的文本

java - Spring云合约和webflux路由

java - 如何判断 Java 整数是否为空?

java - 为什么不支持向 java.time.Instant 添加周数?

Java继承编译

c# - 使用泛型和 'new' 修饰符隐藏父成员时的 C# 继承问题

C++ 继承与重载无法编译?

java - java中的构造函数重载