Java 以类作为输入的类构造函数调用

Java 以类作为输入的类构造函数调用,java,Java,我正在和一个类一起工作,并且得到了一个对这个类的调用,并将其作为输入 professor = new Professor(EEEE, AAAA, YEARS_90, DEP); depProf.addProfessor(professor) public Professor(String name, String surname, Integer yearOfBirth, String department) { this.department = department;

我正在和一个类一起工作,并且得到了一个对这个类的调用,并将其作为输入

 professor = new Professor(EEEE, AAAA, YEARS_90, DEP);

 depProf.addProfessor(professor)
public Professor(String name, String surname, Integer yearOfBirth, String department) {

    this.department = department;
    Person curPerson = new Person(name, surname, yearOfBirth);

}
Professor有一个构造函数(String,String,Integer,String),但在一个测试中,我想用(Professor)作为输入从另一个地方调用它

 professor = new Professor(EEEE, AAAA, YEARS_90, DEP);

 depProf.addProfessor(professor)
public Professor(String name, String surname, Integer yearOfBirth, String department) {

    this.department = department;
    Person curPerson = new Person(name, surname, yearOfBirth);

}
我怎样才能成为教授(Professor)的构造器?如果这有意义的话


我正在考虑在调用第二个构造函数时调用第一个构造函数,但实际上不知道如何使其工作。

您可以使用
this
调用另一个构造函数

public Professor(Professor professor) {
    this(professor.name, professor.surname, professor.yearOfBirth, professor.department);
}

您可以调用同一类中的另一个构造函数,例如:

公共教授(字符串名称、字符串姓氏、整数出生年份){
this.name=名称;
this.姓氏=姓氏;
this.yearOfBirth=出生年份;
}
公共教授(字符串名称、字符串姓氏、整数出生年份、字符串系){
这(姓名、姓氏、出生年份);
这个部门=部门;
}
公共教授(p教授){
这(p.姓名,p.姓氏,p.出生年份,p.部门);
}

如果我没有弄错,您正在尝试使用复制构造函数。这个构造函数是默认的C++生成的,但是你必须手动实现java中的一个,在你的代码>教授< /Cord>类:

public Professor(Professor p) { 
    this(p.name, p.surname, p.yearOfBirth, p.department);
} 

您只需编写构造函数,具体是什么让您感到困惑
public Professor(Professor other){…}
然后复制他的状态或调用另一个构造函数
this(other.getName()、other.getName()、other.getYearOfBirth()、other.getDepartment())clone
mechanism-黑色巫毒魔法。若我的教授课上并没有名字、姓氏和出生年份呢?教授构造函数调用Person(String,String,Integer)教授只有department。没关系,没想到超类的东西。