里氏轉換原則
子類能夠賦值給父類對象
父類對象能夠強制轉化爲對應的子類對象
里氏替換原則直觀理解就是"子類是父類",反過來就說不通了.
就像男人是人對的,但人是男人就不對了.
這樣明白了吧.
在面向對象思想中可知,派生類擁有基類向下公開的全部特徵,它是基類的一個特例。
當派生類對象賦於基類類型時,將出現如下狀況:派生類的數據結構依次對應於基類的數據結構。而派生類擁有的本身的數據將不可見。
當基類的對象試圖轉換爲派生類型時,將出現基類對象的數據沒法依次填充完派生類的全部數據結構。這就形成了它將沒法完成派生類定義的功能。編譯器將會提示甚至報錯。
這就是派生類能勝任基類功能,而基類卻沒法徹底勝任派生類功能的緣由。
強制轉換屬於 基類到派生的過程:那是由於 設計人員知道:該基類對象的數據結構徹底能夠填充完派生類的結構。不然,將出現強轉錯誤。通常最好避免使用強轉!
還有,子類可以出如今任何父類對象出現的地方不是徹底正確的,父類有時也不會將本身的一些成員公開給子類。
C#示例代碼:http://www.eyesourcecode.com/f/CSharp/1數據結構