class Fu{int num=4;void show(){System.out.println("showFu");}}class Zi extends Fu{int num = 5;void show(){System.out.println("showZi");}}public class Test1{public static void main(String[] args){Fu f=new Zi();Zi z=new Zi(); System.out.println(f.num); *請(qǐng)問這個(gè)為什么打出來是4 System.out.println(z.num); f.show(); z.show();}}
2 回答

滄海一幻覺
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
Fu f=new Zi();
因?yàn)閒是Fu類型,所以看不到Z的成員。
如果是
System.out.println(((Z)f).num);
則輸出5
成員變量沒有“覆蓋”一說。

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
在java中,通常屬性是沒有多態(tài)這個(gè)概念的,不僅是成員變量,還有靜態(tài)方法。
意思就是,如果你這個(gè)num,是通過靜態(tài)方法來獲取的話,那么依舊是父類的靜態(tài)方法來為你提供返回值,而不是子類
除了成員變量和靜態(tài)方法以外,普通的方法,就是執(zhí)行子類的方法了,如果你不想要父類的成員變量,想要子類的,那么可以通過子類的get方法來獲取,前提是你要寫了get、set方法23333
通過f.getNum()來獲取子類的成員變量的值
希望能夠幫助你理解~
添加回答
舉報(bào)
0/150
提交
取消