关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
上个月关门了。
改进这个问题
我这里有一段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;
}
}
有人能解释为什么这两个构造函数都是编写的,而不是一个或另一个吗?
1条答案
按热度按时间hiz5n14c1#
hibernate需要一个无参数构造函数,当它需要示例化一个持久类时,它使用反射来调用无参数构造函数。因此,由于库或框架需要构造函数,因此可以提供构造函数。
显然,另一个构造函数是为了方便程序员设置名称和id,而不需要调用单独的setter。
如果需要,可以将no-arg构造函数设为私有,hibernate仍然可以使用它。
有一种模式称为构造函数链接(这里描述:在构造函数中委托给另一个构造函数(使用this())是好还是坏),它显示了多个构造函数是如何有意义的,但是显示的代码没有这样做。