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