gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:33:00 28 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

1年前关闭。




Improve this question




我在这里有一段 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;
}
}
有人可以解释为什么这两个构造函数都被编写了,而不仅仅是一个或另一个?

最佳答案

Hibernate 需要一个无参构造函数,它在需要实例化持久类时使用反射来调用无参构造函数。因此,由于库或框架需要构造函数,因此可以存在构造函数。
显然,另一个构造函数是为了方便,因此程序员可以设置名称和 ID,而无需调用单独的 setter 。
如果你愿意,你可以将无参数构造函数设为私有(private),Hibernate 仍然可以使用它。
有一种称为构造函数链接的模式(在此处描述:Is it good or bad to delegate to another constructor (using this()) within a constructor),它显示了多个构造函数如何有意义,但显示的代码并没有这样做。

关于java - 为什么默认构造函数和参数化构造函数都在一个类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64936607/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com