父類Father和子類Son,父類中有一個方法A,在子類中也定義了一模一樣的一個方法A(具有與老方法相同的方法簽名),那麼在子類中那個A自然會把父類中的A給覆蓋了。通過子類的對象調用方法A的時候,自然執行的是子類的A,通過父類的對象調用A的時候,自然執行的是父類的A,那麼問題是:如果父類中有一個成員變量是子類Son,那麼在父類中通過調用這個私有對象變量的方法A的時候, 是子類的A,還是父類的A?
這麼給你說吧,假如你實例化son,jvm會根據繼承關系先調用父類構造函數,但是在調用所有構造函數之前會將每個類的對象初始化(不是你賦值時的初始化)成二進制的0
,所以父類任然會調用子類的方法,但是結果完全不可預料,所以強烈建議不要這樣寫。