3 回答

TA貢獻1876條經(jīng)驗 獲得超7個贊
super()就是調(diào)用父類無參的構(gòu)造方法。java中,所有的子類,在子類構(gòu)造方法的第一行,都是調(diào)用父類的構(gòu)造方法,就算不寫,也會自動調(diào)用父類無參數(shù)的構(gòu)造方法,因為父類可能有多個構(gòu)造方法,(這點從方法的重載可以理解,)那么,就需要在子類構(gòu)造方法的第一行明確的用super調(diào)用指定的父類構(gòu)造方法。
至于你問,為什么要調(diào)用父類的構(gòu)造方法,這是因為,子類繼承了父類,那么,子類必定會繼承父類所有非private的成員,那么,當然要在構(gòu)造子類對象之前,先把父類對象構(gòu)造出來,不然,子類怎么繼承父類呢??父子父子,先有父,然后才有子,所以,一定是先構(gòu)造父類對象,然后,再構(gòu)造子類對象,對于子類,肯定是先擁有了父類的所有功能(方法),然后才有自己特有的。
希望能幫助你理解。面向?qū)ο筮@部分,對初學有點小復雜

TA貢獻1829條經(jīng)驗 獲得超7個贊
super()是調(diào)用父類構(gòu)造函數(shù)。
這個例子太簡單了,不足以說明問題。
很多時候Base類里面有成員需要初始化,你的派生類的構(gòu)造函數(shù),如果不調(diào)用super()方法,則父類的里成員變量就無法通過base類的構(gòu)造函數(shù)初始化
添加回答
舉報