java构造函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 01:22:39
子类不显示调用父类的构造方法时不是先调用父类的无参构造方法吗,
public class Person{
String name;
String loc;
Person(String name,String loc){
this.name = name;
this.loc = loc;
}
Person(){
}
}
public class Student{
String school;
Student(String name,String school){
this(name,"北京",school);
}
Student(String name,String loc,String school){
super(name,loc);
this.school = school;
}
}

public classs Test{
public static void main(String[] args){
Student s = new Student("aa","大学");
}
}

为什么调用构造函数Stuent("aa","大学")没有先调用父类的默认构造函数,而直接调用了this("aa","北京","大学")????
哦,忘写了Student 继承 Person

this(name,"北京",school);必须是第一句调用,他去调用Student(String name,String loc,String school){
super(name,loc);
this.school = school;

你把这句注释后就会调用Person(){ }

1.重载父类的构造方法了,Person(String name,String loc)
2.子类显示的调用父类的构造方法super(name,loc);
所以不会调用父类的默认构造方法