主要參考了下面的文章,根據它來談談自己的看法。
參考文章:http://blog.sina.com.cn/s/blog_60cc33d70100xylq.html
先貼張圖:
1. public繼承
從語義角度上來說,public繼承是一種接口繼承(可以理解爲子類對象可以調用父類的接口,也就有可能實現多態了)
從語法角度上來說,public繼承後,關係見上圖。很明顯父類public成員在子類中仍然是public,所以子類對象可以調用父類的接口
2. protected繼承
從語義角度上來說,protected繼承是一種實現繼承
從語法角度上來說,protected繼承後,父類public和protected成員都變成子類的protected成員了,也就是說子類對象無法調用父類的接口,只能將父類的函數當作子類的內部實現,當然也就不符合“Liskov替換原則(LSP)”了。
3. private繼承
從語義角度上來說,private繼承是一種實現繼承
從語法角度上來說,private繼承後,父類public和protected成員都變成子類的private了,它比protected繼承更嚴格。也就說這些父類的成員只能被繼承一次,再繼續繼承,父類的成員就不可見了。private繼承更不符合“Liskov替換原則(LSP)”了。