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