【发布时间】:2015-05-05 20:48:21
【问题描述】:
public class Base {
int var =0;
Base(){
System.out.println("Inside Base constructor .....");
setVar();
}
public void setVar(){
System.out.println("Inside base setVar method.....");
var+=10;
}
public int getVar(){
return var;
}
}
派生类:
public class Derived extends Base {
Derived(){
System.out.println("Inside Derived constructor .....");
setVar();
}
public void setVar(){
System.out.println("Inside Derived setVar method.....");
var+=20;
}
public static void main(String[] args){
Base b = new Derived();
System.out.println(b.getVar());
}
}
输出.....
Inside Base constructor .....
Inside Derived setVar method.....
Inside Derived constructor .....
Inside Derived setVar method.....
40
问题---->为什么当控制权转到基类构造函数时,调用派生类的 setVar() 方法而不是基类的 setVar() 方法。 我预计输出为 30 ,但是当在调试模式下运行该程序时发现流程并得到输出为 40。谁能解释一下这背后的逻辑。 谢谢
【问题讨论】:
标签: java constructor overriding chaining