class First{
First(){
method();
}
public void method(){
System.out.println("first");
}
}
class Second extends First{
Second(){
method();
}
public void method(){
System.out.println("second");
}
public static void main(String[]args){
new Second();
}
}
为什么两次输出的都是second??
------解决方案--------------------
方法从18行 new Second(); 开始,首先加载类的无参构造方法,但Second 类有父类存在,故先加载父类的构造方法,也就是First的构造方法,父类构造方法中调用的是method方法,由于子类Second类重写了method方法,所以First类调用的method方法将调用Second类的method方法。此时,父类的构造方法调用加载完毕。然后加载自己的也就是Second类的构造方法,Second类也调用method方法,调用的自己就是自己的method方法了。所以调用两次Second类的method方法。