2 回答
吃雞游戲
TA貢獻1829條經驗 獲得超7個贊
慕婉清6462132
TA貢獻1804條經驗 獲得超2個贊
兄弟,我查了好久,
這個程序的執行順序是:建立子類sub的對象,接著調用父類的構造方法Super,Super中調用test方法,此時test方法調用的是子類的test方法,而不是Super類的,原因是建立的是子類的對象,這一點類似于Super s= new Sub(); s.test調用的就是子類的test方法;說完原因,這個是時候由于子類的構造方法還沒有執行,所以成員變量a還是默認值,int類型的默認值也就是0;此時父類的構造方法執行完畢,接下來執行子類的構造方法(子類的構造方法是系統默認的無參數的構造方法),這時候a的值才為6,所以,最后程序的輸出是0。
你可以建一個Sub引用去接收這個子類對象,然后打印出a,就會輸出6;
建一個Super引用去接收這個對象,打印a就可以輸出5.
這個程序的執行順序是:建立子類sub的對象,接著調用父類的構造方法Super,Super中調用test方法,此時test方法調用的是子類的test方法,而不是Super類的,原因是建立的是子類的對象,這一點類似于Super s= new Sub(); s.test調用的就是子類的test方法;說完原因,這個是時候由于子類的構造方法還沒有執行,所以成員變量a還是默認值,int類型的默認值也就是0;此時父類的構造方法執行完畢,接下來執行子類的構造方法(子類的構造方法是系統默認的無參數的構造方法),這時候a的值才為6,所以,最后程序的輸出是0。
你可以建一個Sub引用去接收這個子類對象,然后打印出a,就會輸出6;
建一個Super引用去接收這個對象,打印a就可以輸出5.
添加回答
舉報
0/150
提交
取消

