繼承的最大好處就是為了實現(xiàn)代碼的復(fù)用。那么,子類到底從父類得到的什么呢?
實例成員
父類的private成員不會被子類繼承,子類不能訪問。但是子類對象的確包含父類的私有成員。
父類的 包訪問成員 繼承為子類的包訪問成員。就好像他們直接定義在子類中一樣。
父類的 protected 成員繼承為子類的protected 成員。就好像他們直接定義在子類中一樣。
父類的 public 成員繼承為子類的public 成員,就好像他們直接定義在子類中一樣。
實例方法
繼承到的實例方法在子類中可以直接被使用,還需重點理解是方法的重寫和重載。
重寫override
一個繼承鏈中,父類的方法對于子類來說具有相同的語義,但是不同的細(xì)節(jié)操作,因此子類需要override父類的這個方法以滿足自己的需求。
注意的點:
1、方法名,參數(shù)表一定和父類中的相同,返回類型相同,或者是子類。
1、訪問權(quán)限一定不低于父類的實例方法
2、拋出的異常一定是父類方法拋出的異常相同,或者子類。
如果拿C++和java對比,那么java中的實例方法默認(rèn)都是virtual的(java中沒有virtual這個key word),因此在java中,子類可以直接重寫父類方法的任何非final實例方法,但是在C++中,除非父類使用virtual標(biāo)記一個方法為虛方法,子類才可以override這個方法。
對于重寫的方法,javac是不能確定的具體要調(diào)用那個類的方法,而是產(chǎn)生特殊的字節(jié)碼讓jvm去動態(tài)決定什么方法。這個就是所謂的前期綁定和后期綁定的差異。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26