程序的执行结果是()
public class Test {
public static void main(String [] args){
Child c = new Child();
}
}
class Father{
public Father(){
System.out.println("父类无参构造函数");
}
public Father(String name){
System.out.println("父类有参构造函数");
}
}
class Child extends Father{
public Child(){
this("dd");
System.out.println("子类无参构造函数");
}
public Child(String name){
super("dd");
System.out.println("子类有参构造函数");
}
}
A 子类无参构造函数 子类有参构造函数 父类无参构造函数
B 子类有参构造函数 子类无参构造函数 父类无参构造函数
C 父类无参构造函数 子类有参构造函数 子类无参构造函数
D 父类有参构造函数 子类有参构造函数 子类无参构造函数
理解不一定正确,仅供参考:
1、Child c = new Child();
2、到Child无参构造器public Child(),执行this("dd");
3、到Child带String参数的构造器public Child(String name),执行super("dd");
4、到父类Father带一个参数的构造器public Father(String name),执行System.out.println("父类有参构造函数");
5、然后到第3步执行super("dd");后面的语句,System.out.println("子类有参构造函数");
6、再到第2步,执行this("dd"); 后面的语句,System.out.println("子类无参构造函数");
7、所以答案应该是D
C
父类无参先执行