.NET基礎(chǔ)第十三天


一、C#中的訪問修飾符(5個,默認是internal)
????????public: 公開的,公共的,所有對象都可以訪問
????????private: 私有的,只能在當(dāng)前類(對象)的內(nèi)部訪問
????????protected: 受保護的,子類也可以訪問,只能在當(dāng)前類的內(nèi)部以及該類的子類中訪問(多用于繼承)
????????internal: 只能在當(dāng)前程序集中訪問,在同一個項目中internal和public的權(quán)限是一樣的
????????protected internal: protected+internal 訪問限于當(dāng)前程序集或派生自包含類的類型。
????????1) 能夠修飾類的訪問修飾符只有兩個:public 和 internal , 類前不寫默認就是internal
????????2) 可訪問性不一致: 子類的訪問權(quán)限不能高于父類的訪問權(quán)限,會暴露父類的成員
二、設(shè)計模式: 設(shè)計這個項目的一種方式
????????????簡單工廠設(shè)計模式
????????????***香草的補充:簡單工廠設(shè)計模式,是工廠設(shè)計模式的簡化版,如果子類很多,會出現(xiàn)子類數(shù)量爆炸的問題,實際上還有工廠設(shè)計模式和抽象工廠設(shè)計模式? ??

三、值傳遞和引用傳遞

值類型:int double char decimal bool enum? struct
引用類型:string? 數(shù)組? ?自定義類? ?集合? object? 接口
值類型在復(fù)制的時候,傳遞的是這個值的本身(拷貝值);引用類型在傳遞的時候,傳遞的是對這個對象的引用(類似于C中的指針),實際上共用一塊內(nèi)存空間

ref的作用 相當(dāng)于傳遞實參的地址給了形參 此時形參和實參共用一塊內(nèi)存?

四、序列化與反序列化(BinaryFormatter類)
????????1. 序列化:將對象轉(zhuǎn)換為二進制
????????2. 反序列化:將二進制轉(zhuǎn)換為對象
????????3. 作用:傳輸數(shù)據(jù)。
五、部分類和密封類
partial部分類:允許一個類出現(xiàn)多個不同的部分,共同構(gòu)成一個類,可以共享成員
sealed密封類(類似于Java中的final關(guān)鍵字):不能夠被其他類繼承,但是可以繼承于其他類
六、接口(重點)※※※
語法:
????????○ 接口是一種規(guī)范。
????????○ 只要一個類繼承了一個接口,則這個類就必須實現(xiàn)這個接口中所有的成員
????????○ 為了多態(tài),接口不能被實例化,也就是說,接口不能new(不能創(chuàng)建對象)
????????○ 接口中的成員不能加“訪問修飾符”,接口中的成員訪問修飾符為public,不能修改(默認為public)
????????○ 接口中的成員不能有任何實現(xiàn)(“光說不做”,只是定義了一組未實現(xiàn)的成員)
????????○ 接口中能有方法、屬性、索引器、事件,自動屬性(在接口中實際上是沒有方法體的get和set方法),不能有字段和構(gòu)造函數(shù)
????????○ 接口之間可以繼承,并且可以多繼承
????????○ 接口并不能去實現(xiàn)一個類,而類可以實現(xiàn)接口(接口只能繼承于接口,而類既可以繼承接口,也可以繼承類)
????????○ 實現(xiàn)接口的子類必須實現(xiàn)該接口的全部成員
????????○ 一個類可以同時繼承一個類并實現(xiàn)多個接口,如果一個子類同時繼承了父類A,并實現(xiàn)了接口IA,那么語法上寫子類繼承時,A必須寫在IA的前面 即 class MyClass : A , IA {}? ? 因為類是單繼承的
????????○ 實現(xiàn)接口的目的,就是解決方法中的重名問題
????????○ 什么時候顯式的去實現(xiàn)接口:當(dāng)繼承的接口中的方法和參數(shù)一模一樣的時候,需要顯式的去實現(xiàn)接口
????????○ 當(dāng)一個抽象類實現(xiàn)接口的時候,需要子類去實現(xiàn)接口