public class Animal {
String name;
Animal(String name) {
this.name = name;
}
Animal() {
this(makeRandomName());
}
static String makeRandomName() {
int x = (int) (Math.random() * 5);
String name = new String[] {"Fluffy", "Fido","Rover", "Spike","Gigi"}[x];
return name;
}
public static void main (String [] args) {
Animal a = new Animal();
System.out.println(a.name);
Animal b = new Animal("Zeus");
System.out.println(b.name);
}
}
答案 0 :(得分:3)
不,对于调用其他构造函数的Animal()
构造函数(使用this(makeRandomName());
),super()
不会被添加。它只会添加到Animal(String name)
构造函数。
这当然意味着两个构造函数最终都会执行超类的构造函数(即Object
的构造函数)。
答案 1 :(得分:2)
除非已明确提出super()
或super()
来电,否则系统会插入this()
来电。