我很困惑,因爲我認爲這是指調用方法的當前對象。
那麼爲什麼我的對象中的實例變量x在調用繼承方法時沒有改變? 超類:爲什麼「錯誤」的實例變量被修改?
public class SuperBoss
{
int x = 50;
public void changeX()
{
this.x = 20;
}
}
子類:
public class Boss extends SuperBoss
{
int x = 10;
public static void main(String[] args)
{
Boss b = new Boss();
b.changeX();
System.out.println(b.x); //prints 10
}
}
爲什麼它打印10和20不是?
因爲java支持行爲覆蓋而不是屬性覆蓋。換一種說法。 Java支持方法重寫而不是變量重寫。 –