OPK*_*OPK 0 java constructor overloading
从书中读取重载的构造函数后,我厌倦了以下代码:
public class Employee {
String name;
int idNumber;
public Employee(){
this("JJ", 0);
System.out.println(name +" "+ idNumber);
}
public Employee(String name, int num){
this.name = name;
idNumber = num;
System.out.println(name +" 2nd "+ idNumber);
}
}
public class Object1 {
public static void main(String[] args) {
Employee emp = new Employee();
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
JJ 2nd 0
JJ 0
Run Code Online (Sandbox Code Playgroud)
我真的很困惑.为什么"JJ 2nd 0"首先打印出"JJ 0"?我创建了一个雇员对象emp并且没有在参数中传递任何args,是不是先调用第一个构造函数?
new Employee();
正在调用
public Employee(){
this("JJ", 0);
System.out.println(name +" "+ idNumber);
}
Run Code Online (Sandbox Code Playgroud)
在这个构造函数中
this("JJ", 0);
正在调用
public Employee(String name, int num)
构造函数,以调用结束
System.out.println(name +" 2nd "+ idNumber);
.
负责印刷
JJ 2nd 0
什么时候this("JJ", 0);
完成 System.out.println(name +" "+ idNumber);
将被调用,你应该看到另一行
JJ 0