下面代码的输出是什么?
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 void callName(){
System. out. println (baseName) ;
}
}
public static void main(String[] args){
Base b = new Sub();
}
}
正确答案: A
A.null
B.sub
C.base
- 主函数进战,创建了一个父类引用指向子类对象b
- new Sub(),运行构造函数,Sub类内没写,所以默认无参构造函数入栈
- 在子类构造函数入栈后立刻执行父类构造函数
- 父类构造函数中执行callName()函数,执行子类重写callName(),打印子类的baseName内容,而此时baseName未初始化,为null
问1:当Sub类中baseName为静态成员变量时,该代码执行结果为?
答:sub