下面代碼輸出的是什麼
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、base B、sup C、null
答案選C
new Sub();在創造派生類的過程中首先創建基類對象,然後才能創建派生類。
創建基類即默認調用Base()方法,在方法中調用callName()方法,由於派生類中存在此方法,則被調用的callName()方法是派生類中的方法,此時派生類還未構造,所以變量baseName的值爲null