c 繼承之黎克特制轉換規則

2021-07-02 04:47:38 字數 815 閱讀 7042



1.在c#中如果乙個類沒有顯示的去繼承任何類,那麼這個類就繼承自object類,

2.object類是所有類的基類

物件導向的繼承實際上就是一棵進化樹,所有的子類在大類上都屬於父類的類別(子類,父類中的「類」都是「類別」的意思)

但子類相對於父類又增加了很多自己的屬性和方法。難點在於:為什麼子類擁有的「東西」(屬性和方法)比父類多,但子類還是屬於

父類?貌似傳統中內容的包含關係,子類繼承父類,子類「有」(注意:「有」但不一定能訪問)父類所有的東西,貌似是子類包含父類??!

錯誤!因為物件導向的思想是**於生物進化的,人類的確比猿類多了很多的屬性和方法,但猿類仍然是我們的父類~因此可以這樣說,只要你是個人,那麼

你就一定也是個猿!

區分清楚:類別的進化包含關係和類別中內容的包含關係! 裡

氏轉換規則是編譯器的乙個要求,如果編譯器不能支援黎克特制轉換規則,那麼這個編譯器的設計便不符合要求。

黎克特制轉換規則的具體內容:

1. 所有的子類也都是其父類的類別,因此可申明乙個父類的變數,來接受其所有的子類

如:father fa = new son(); 這樣做是可以的

但是fa即使是個son物件,但由於其型別限制,只會表現出father類的屬性和方法,

如果想將fa暴漏出son的屬性和方法,可以將其還原。

2. 如果父類中裝的是子類物件,可以將這個物件轉換為子類物件

son s = fa as son(轉換失敗的話,s = null)

或者;if (s is son)

注意:is的用法:判斷物件是否是該類的乙個例項,如果是則返回true,否則false

指定域轉換規則

11.2.2.2.指定域轉換規則 現在看第8和第9行,這裡出現了兩次呼叫domain auto trans 巨集,這個巨集可能是strict示例策略中最常用的乙個巨集了,因為它定義了我們在第2章 概念 中討論到的允許域轉換的標準規則,你可以在.macros core macros.te檔案找到這個巨...

js數值轉換規則

如果是物件,則呼叫valueof 方法按照前述規則繼續轉化,若結果為nan,則呼叫物件的tostring 方法,再按照前面的規則轉換返回的字串 parseint 處理字串時會忽略字串前面的空格,若遇到第乙個字元不是數字或符號,則返回nan 如果是數字,則會解析直到所有字串或遇到非數字字元。會識別十六...

C語言隱式型別轉換規則

先看程式 include include int main int argc,char argv 執行結果是 1 1 解釋 按步驟進行.1.如果其中乙個運算元為long double型別,則另乙個運算元被轉換為long double.2.否則,如果其中乙個運算元為double,則另乙個運算元被轉換為...