class Student {
int id;
String name;
Student() {
System.out.println("default");
}
Student(int id, String name) {
this();
this.id = id;
this.name = name;
}
Void display() {
System.out.println(id + "" + name);
}
public static void main(String args[]) {
Student e1 = new Student(111, "karan");
e1.display();
}
}
输出结果是:
default
111 karan.
我不明白为什么会输出默认值,我称为有参数的构造函数
答案 0 :(得分:2)
:
Student(int id, String name){
this();
this.id=id;
this.name=name;
}
在第一行中调用this();
那就是调用构造函数whitout参数。
Student(){
System.out.println("default");
}
结果是:
default
111karan
通常你不会调用其他构造函数,所以删除this();在带有参数的构造函数中
Student(int id, String name) {
this.id = id;
this.name = name;
}
所以你会有
111karan
答案 1 :(得分:1)
看起来你正在"默认"在输出中,因为你正在调用this();在参数化构造函数中。
答案 2 :(得分:0)
你正在打电话
this()
在第二个构造函数(带参数的构造函数)中。这意味着第一个构造函数被调用,因此它打印“default”。然后它像往常一样继续。尝试注释(如果您以后可能需要它),或删除第二个构造函数中的第一行。它应该是:
Student(int id, String name){
this.id=id;
this.name=name;
}
编辑:我假设当你说它打印出“默认111 karan”时,你并不是说它全部在控制台的同一行。如果是这样,System.out.println()出现了一些奇怪的错误。
答案 3 :(得分:0)
Student(int id, String name){
this(); // You are calling the constructor with no arguments
this.id=id;
this.name=name;
}