package rups;
public class vipcustomer{
private String name;
private int creditlimit;
private String emailid;
public vipcustomer(){
this("Rupali", 5000, "rupalisingh@gmial.com");
System.out.println("Constructer with default values");
}
public vipcustomer(int creditlimit, String emailid) {
this("Rups", creditlimit, emailid);
this.creditlimit = creditlimit;
this.emailid = emailid;
System.out.println("Constructor with 1 default values");
}
public vipcustomer(String name, int creditlimit, String emailid) {
this.name = name;
this.creditlimit = creditlimit;
this.emailid = emailid;
System.out.println("Constructer with no default values");
}
public String getName() {
return name;
}
public int getCreditlimit() {
return creditlimit;
}
public String getEmailid() {
return emailid;
}
}
public class Main {
public static void main(String args[]){
new vipcustomer();
new vipcustomer(5000, "sdhoahfsdh");
new vipcustomer("Rups", 7000, "dfksjdfsjdfa");
}
}
输出
Constructer with no default values
Constructor with 1 default values
Constructer with no default values
这里的第一个构造函数应该将输出作为“具有默认值的构造函数”,但事实并非如此。我做错了什么?请帮忙。
最佳答案
在构造函数中,您可以使用 this
关键字调用同一类中的另一个构造函数。这样做称为显式构造函数调用。
让我们分析一下你的代码,共有三个构造函数:
public vipcustomer()//------------------------------------------------(C1)
public vipcustomer(int creditlimit, String emailid)//-----------------(C2)
public vipcustomer(String name, int creditlimit, String emailid)//----(C3)
所以当你使用 :
new vipcustomer();
它调用这个构造函数:
public vipcustomer() {
this("Rupali", 5000, "rupalisingh@gmial.com");
System.out.println("Constructer with default values");
}
但请注意 this("Rupali", 5000, "rupalisingh@gmial.com");
当 C3
时它调用 C3
完成打印:
Constructor with no default values
第一个输出是:
Constructor with no default values
然后
Constructor with default values
其他构造函数也一样。
this()
函数根据参数列表调用重载的构造函数。
看看这个:
关于java - 我的构造函数没有给出所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48130117/