您的位置:首页 > 编程语言 > Java开发

阿里巴巴2014校园招聘研发笔试一道JAVA附加题分析

2016-10-21 11:52 393 查看
package alfred;

public class Base {
private String baseName = "base";

public Base() {
callName();
}

public void callName() {
System.out.println(baseName);
}

static class Sub extends Base {
private String baseName = "sub";

public Sub() {
//			super();//只是执行到这一步,没有初始化子类成员变量,输出null
//			System.out.println(this.baseName);//初始化子类成员变量,输出sub
//			callName();

}

public void callName() {
System.out.println(baseName);
}
}

public static void main(String[] args) {
Base b = new Sub();
}
}


实际上在new Sub()时,实际执行过程为:

  public Sub(){

      super();

   baseName = "sub"; 

    }

  可见,在baseName = "sub"执行前,子类的callName()已经执行,所以子类的baseName为默认值状态null;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: