a.繼承復用破壞包裝,因為繼承將超類的實現細節暴露給子類。由于超類的內部細節常常是對于子類透明的,所以這種復用是透明的復用,又稱“白箱”復用。 b.如果超類發生改變,那么子類的實現也不得不發生改變。 c.從超類繼承而來的實現是靜態的,不可能在運行時間內發生改變,沒有足夠的靈活性。 其中a.繼承將超類的實現細節暴露給子類; 對于父類來說,暴露給子類的只能是pretected權限(如果在一個包中,還有package),而對于一個類來說,實現細節應該被控制為private;實在不明白暴露實現細節怎么理解?? 第二.對于c從超類繼承而來的實現是靜態的,不可能在運行時間內發生改變,沒有足夠的靈活性。 這里的靜態怎么理解,不能改變又怎么理解?????? 請哪位慕友點撥一下哈,萬分感謝??!
2 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
1,父類的實現細節不是要暴露給子類,而是基本上規定了這個方法在什么時候適用,并且給子類修改的機會。
2,繼承用法我覺得有兩種,一是子類方便利索的得到父類的特性和方法,而是重構;假如是一的話,大可不比糾結暴露不暴露的問題,因為我們本身就是想得到父類的一切,減少重復代碼,假如是二的話,一般來說會用父類的對象指向子類引用,那么在操作過程中,肯定是父類的對象來調用方法,也就是說,你子類暴露的方法基本上得和父類一樣,因為你和父類不同的方法基本上沒機會調用,頂多是類里面的方法自己調用而已,
那么這樣就體現了靈活性,有的書叫做后綁定。從超類繼承而來的實現是靜態的就表示你在語言一級的特性上再怎么變換,編譯好的class和方法基本上不會變的,除非你用字節碼改變。
添加回答
舉報
0/150
提交
取消