为什么默认构造函数和参数化构造函数都在一个类中?

j8ag8udp  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(345)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。

上个月关门了。
改进这个问题
我这里有一段java代码,其中创建了一个抽象类。不过,我对这个片段感到困惑的是,为什么作者决定同时使用默认构造函数和参数化构造函数。

abstract class Person {
    String personName;
    String personID;

    //default consructor
    Person() {

    }

    //parameterized constructor
    //assigns personName and personID to object at time of creation
    Person(String personName, String personID) {
        this.personName = personName;
        this.personID = personID;
    }

    //getters and setters

    public String getPersonName() {
        return personName;
    }

    public void setPersonName(String personName) {
        this.personName = personName;
    }

    public String getPersonID() {
        return personID;
    }

    public void setPersonID(String personID) {
        this.personID = personID;
    }
}

有人能解释为什么这两个构造函数都是编写的,而不是一个或另一个吗?

hiz5n14c

hiz5n14c1#

hibernate需要一个无参数构造函数,当它需要示例化一个持久类时,它使用反射来调用无参数构造函数。因此,由于库或框架需要构造函数,因此可以提供构造函数。
显然,另一个构造函数是为了方便程序员设置名称和id,而不需要调用单独的setter。
如果需要,可以将no-arg构造函数设为私有,hibernate仍然可以使用它。
有一种模式称为构造函数链接(这里描述:在构造函数中委托给另一个构造函数(使用this())是好还是坏),它显示了多个构造函数是如何有意义的,但是显示的代码没有这样做。

相关问题