為什么我在子類(lèi)中修改父類(lèi)的屬性值,子類(lèi)屬性值也一同修改?
public class Fighter extends Card {
public Fighter(){
System.out.println("1 super role: " + super.role);
System.out.println("1 figher role:" + role) ;
role=3;
System.out.println("2 figher role:" + role) ;
System.out.println("2 super role: " + super.role);
}
}
輸出結(jié)果為:
1 super role: 5
1 figher role:5
2 figher role:3
2 super role: 3
Fighter繼承Card,我修改super.role的值,會(huì)導(dǎo)致子類(lèi)的role值也改變???
2015-06-06
屬性是不能被覆蓋或者重寫(xiě)的。
所以無(wú)論是this.role還是super.role 訪(fǎng)問(wèn)的都是同一個(gè)屬性。
你對(duì)這個(gè)屬性進(jìn)行了操作 當(dāng)然會(huì)出現(xiàn)這種情況。
如果子類(lèi)中有和父類(lèi)同名的屬性時(shí)候,this.role和super.this才會(huì)有區(qū)別。
2015-06-06
子類(lèi)繼承父類(lèi)的非私有屬性,所以當(dāng)你重新定義了父類(lèi)中的屬性時(shí),再次調(diào)用時(shí)肯定顯示修改后的值