java我的构造函数有点问题ToString一直返回null
我不希望你读完整的代码。如果复制并粘贴到IDE中,您应该会发现问题所在。 我是Java新手,由于这个构造函数问题,这段代码占用了我的时间。 总之,代码工作正常,但不返回对象的字符串表示
public class TestContact {
public static void main(String[] args) {
// Juiste invoer begins with 0 and 9 digits
Phone vasteTel1 = new Phone("027261747", "FIX");
// wrong fix phone
Phone vasteTel2 = new Phone("27261447", "FIX");
// Juiste invoer begins with 0 and 10 digits
Phone mobieleTel1 = new Phone("0495556080", "MOBIELE");
// // wrong mobile phone
Phone mobieleTel2 = new Phone("10495557841", "MOBIELE");
Contact contact1 = new Contact("Joske Ergens", "mobiele",
"jos.ergens@where.com", "0495558041");
Contact contact2 = new Contact("Joseline Peremans", "mobiele",
"joseline.peremans@where.com", "024596247");
System.out.println("NUMMER " + vasteTel1.getNummer() + "\nSOORT: "
+ vasteTel1.getSoort() + "\nGELDIG NUMMER ?: "
+ vasteTel1.isGeldigNummer() + "\n");
System.out.println("NUMMER " + vasteTel2.getNummer() + "\nSOORT: "
+ vasteTel2.getSoort() + "\nGELDIG NUMMER ?:"
+ vasteTel2.isGeldigNummer() + "\n");
System.out.println("NUMMER " + mobieleTel1.getNummer() + "\nSOORT: "
+ mobieleTel1.getSoort() + "\nGELDIG NUMMER ?: "
+ mobieleTel1.isGeldigNummer() + "\n");
System.out.println("NUMMER " + mobieleTel2.getNummer() + "\nSOORT: "
+ mobieleTel2.getSoort() + "\nGELDIG NUMMER ?: "
+ mobieleTel2.isGeldigNummer() + "\n");
System.out.println(contact2);
}
}
公共类联系人扩展了ContactGevens{
ContactGegevens gegevens;
String naam;
public Contact() {
}
public Contact(String naam, String soort, String mail, String nummer) {
this.naam = naam;
gegevens = new ContactGegevens(getNummer(), getSoort(), getEmail());
}
public void toonInfo() {
}
public String toString() {
return "NAAM: " + naam + "|\n" + gegevens.getNummer();
}
}
公共类ContactGevens扩展手机{
private String eMail;
private Phone gsm;
private Phone telefoon;
public ContactGegevens() {
}
public ContactGegevens(String nummer, String soort, String email) {
super(nummer, soort);
this.eMail = email;
gsm = new Phone(getNummer(), getSoort());
telefoon = new Phone(getNummer(), getSoort());
}
public String getEmail() {
return eMail;
}
public Phone getGsm() {
return gsm;
}
public Phone getTelefoon() {
return telefoon;
}
public String toString() {
// return email adress vast foon, gsm
return "" + eMail + " " + gsm;
}
}
公共电话{
private static final int LENGTE_MOBIEL = 10;
private static final int LENGTEVAST = 9;
private String nummer;
private String soort;
public Phone() {
}
public Phone(String nummer, String soort) {
this.nummer = nummer;
this.soort = soort;
}
public String getNummer() {
return nummer;
}
public String getSoort() {
return soort;
}
public boolean isGeldigNummer() {
if ((nummer.startsWith(nummer, 0) && nummer.length() == LENGTE_MOBIEL))
return true;
else if ((nummer.startsWith(nummer, 0) && nummer.length() == LENGTEVAST))
return true;
else
return false;
}
}
# 1 楼答案
你的错误就在这里:
您正在将gegevens对象设置为一个新的ContactGegevens,并调用对象的getter,它将返回所有空值,因为它的字段尚未设置。改编如下:
此外,您正在扩展和组成相同的类,请看一些面向对象的书籍。。。你应该
a.扩展ContactGevens类,并调用super(…)构造函数,而不是将其设为字段。 b、 要么不扩展它,通过像现在这样将ContactGevens设置为字段来编写Contact和ContactGevens