Java 如何从我继承的类中获取构造函数?
我在Java 如何从我继承的类中获取构造函数?,java,Java,我在freshrCandidate类上有一个构造函数,它继承自Candidate类。我想从候选者类中获取字段,但我被卡住了。 这是候选类中的构造函数: public Candidate(String IDCandidate, String Firstname, String Lastname, String Birthdate, String Address, String Phone, String Email, int CandidateType) { this.IDCandidat
freshrCandidate
类上有一个构造函数,它继承自Candidate
类。我想从候选者
类中获取字段,但我被卡住了。
这是候选类中的构造函数:
public Candidate(String IDCandidate, String Firstname, String Lastname, String Birthdate, String Address, String Phone, String Email, int CandidateType) {
this.IDCandidate = IDCandidate;
this.Firstname = Firstname;
this.Lastname = Lastname;
this.Birthdate = Birthdate;
this.Address = Address;
this.Phone = Phone;
this.Email = Email;
this.CandidateType = CandidateType;
}
public FresherCandidate(String GraduationDate, String GradudationRankm, String Education, String IDCandidate, String Firstname, String Lastname, String Birthdate, String Address, String Phone, String Email, int CandidateType) {
super(IDCandidate, Firstname, Lastname, Birthdate, Address, Phone, Email, CandidateType);
this.GraduationDate = GraduationDate;
this.GradudationRankm = GradudationRankm;
this.Education = Education;
}
以及FreshrCandidate类中的构造函数:
public Candidate(String IDCandidate, String Firstname, String Lastname, String Birthdate, String Address, String Phone, String Email, int CandidateType) {
this.IDCandidate = IDCandidate;
this.Firstname = Firstname;
this.Lastname = Lastname;
this.Birthdate = Birthdate;
this.Address = Address;
this.Phone = Phone;
this.Email = Email;
this.CandidateType = CandidateType;
}
public FresherCandidate(String GraduationDate, String GradudationRankm, String Education, String IDCandidate, String Firstname, String Lastname, String Birthdate, String Address, String Phone, String Email, int CandidateType) {
super(IDCandidate, Firstname, Lastname, Birthdate, Address, Phone, Email, CandidateType);
this.GraduationDate = GraduationDate;
this.GradudationRankm = GradudationRankm;
this.Education = Education;
}
我怎样才能把这些代码:
this.IDCandidate = IDCandidate;
this.Firstname = Firstname;
this.Lastname = Lastname;
this.Birthdate = Birthdate;
this.Address = Address;
this.Phone = Phone;
this.Email = Email;
this.CandidateType = CandidateType;
进入FreshrCandidate中的构造函数:
public FresherCandidate(String GraduationDate, String GradudationRankm, String Education, String IDCandidate, String Firstname, String Lastname, String Birthdate, String Address, String Phone, String Email, int CandidateType) {
super(IDCandidate, Firstname, Lastname, Birthdate, Address, Phone, Email, CandidateType);
this.GraduationDate = GraduationDate;
this.GradudationRankm = GradudationRankm;
this.Education = Education;
--> here
}
当您扩展一个不想再次声明变量的类时,这听起来像是您的“阴影”
class A{
String name;
A(String name){
this.name = name;
}
}
class B extends A{
String name;
String number;
B(String name, String number){
super(name);
this.number = number;
}
public String toString(){
return name + ", " + number + ", " + super.name;
}
}
由于我在B中声明了一个变量名称
,因此B实际上有两个名称。构造函数指定其中一个
System.out.println( new B("bob", "two") );
零,二,鲍勃
解决方案是删除B类中
name
的声明。或者在您的情况下,删除扩展类中重复的变量名,例如IDCandidate
只应在Candidate中声明。super是父类的正确构造函数,您不需要自己这样做。当您调用super时(IDCandidate,…
这些都是为您设置的。请尝试在构造函数中使用print语句,看看何时会发生什么。但是当我打印该语句时,Candidate类中构造函数中的所有变量都将变为null。我不知道whyOK。所以我想您是在问一些其他问题。您能用这些打印内容向我们展示您的代码吗,然后我们就可以告诉你为什么它们是空的。你的问题可能更像是“当我执行以下操作时,为什么成员变量是空的…”你是否在freshrCandidate
类中再次声明了变量?