文章出處

今天繼續分享我的閱讀《LEARNING HARD C#學習筆記》知識點總結與摘要二,仍然是基礎知識,但可溫故而知新。

七.面向對象

三大基本特性:

封裝:把客觀事物封裝成類,并隱藏類的內部實現細節,僅開放相關的訪問屬性、方法等

繼承:通過繼承可以復用父類的代碼;

多態:1.允許將子對象賦值給父對象,2.同方法在不同的對象上有不同的實現方式;

 

子類初始化順序:初始化類的實例字段à調用父類構造函數à調用子類構造函數;

 

重寫:父類聲明為virtual或abstract的類成員(屬性、方法),在子類繼承時必需使用override關鍵字進行重實現(虛方法視情況可不重寫)。重寫一般發生在父類與子類之間;

 

注意:虛擬成員或抽象成員不能是私有的,且重寫時不能改變其訪問修飾符(即:虛擬成員或抽象成員若為public,重寫時不能改為protected,反之一樣是不行的

 

重載:相同的方法名稱不同的形參類型或個數(注意:返回值類型不能做為重載的依據);

 

隱藏(覆蓋):子類使用new關鍵字定義父類同名的方法,即可隱藏父類同名的方法,隱藏后,子類外部不能直接訪問父類隱藏的方法,若需訪問,必須將子類型強制轉換成父類型才能正常訪問;

 

所有類的最高層父類都是object類,即所有類都間接派生于object類;

 

八.接口

  1. 僅可定義屬性、事件、方法、索引器4類成員,且定義的成員不能添加任何訪問修飾符,因為默認都為public,子類繼承并實現這些成員時也必須定義為public;
  2. 支持多重繼承,可繼承多個接口,但不能繼承類;
  3. 可顯式實現接口,顯示實現的成員默認為私有private,不能添加任何訪問修飾符,故不能通過類的對象進行訪問,若需訪問,則必需將對象的類型強制轉換為相應的接口才能正常訪問,這與類的隱藏方法類似,顯示實現接口方法的語法:接口.接口方法(形參表表) { ..方法實現…}

 

九.接口與抽象類的區別

1.接口定義關鍵字為:interface,而抽象類定義關鍵字為:abstract

2.接口不能定義字段、構造函數、析構函數,不能使用任何訪問修飾符(包含static,sealed,virtual等),而抽象類不受限制;

3.接口允許多重繼承,而抽象類僅支持單繼承;

4.接口一般用來定義通用的行為規范,指示所有繼承的類必需具備這些行為,表現為:Can Do,而抽象類一般用來對一類對象的抽象進行描述,指示所有繼承的類都屬于該抽象類,并具備抽象類的所有特性,表現為:IS;

 

十.委托

1.委托是一種類型delegate,可以理解為對方法的包裝,它使得可以將方法作為參數被傳遞,相當于C++中的函數指針;

2.委托的定義與方法的定義類似,只是多了一個delegate關鍵字,定義的語法如下:

訪問修飾符 delegate 返回類型 委托名(形參列表)

3.實例化委托必須保證被委托的方法的方法簽名(形參個數、順序、類型)以及返回類型與委托定義相同;

4.委托鏈:+=表示添加方法到委托鏈中,-=表示從委托鏈中移除方法;

 

事件也是一種委托類型,定義時必需先定義委托類型,然后才能定義事件,事件的定義語法如下:

訪問修飾符 event 委托類型 事件名;

事件通過+=訂閱事件,-=取消訂閱

 

十一.參數傳遞

默認情況下,值類型在方法中是按值傳遞,即將實參的值復制給形參,兩者中任何一個的值改變不會改變另一個的值;

引用類型在方法中是按引用傳遞,即實參將變量的的引用地址傳遞給形參,兩者均指向同一個對象,任何一個的值改變,則另一個也會變化;(字符串雖為引用類型,但由于其特殊性,默認情況下,在方法中是按值傳遞)

通過添加rel或out關鍵字來顯式實現參數(不論任何類型)按引用類型傳遞,其中使用rel關鍵字時,實參必需先初始化,而out關鍵字則沒有此要求;

 

十二.泛型

泛型代表的就是通用類型,它可以代表任意類型,使類型參數化,從而實現同一個方法可以操作不同的類型的目的;

泛型解決了類型之間裝箱與拆箱的問題;

浮型約束采用where 關鍵字,如:where T:class,約束是為了將泛型的類型具體化。

約束種類如下:

引用類型約束(T:class),確保傳遞的類型實參必須為引用類型;

值類型約束(T:struct),確保傳遞的類型實參必須為值類型(不包括可空類型);

構造函數約束(T:new()),確保傳遞的類型實參必須有公共的無參構造函數,此約束適用所有非靜態、非抽象的包含無參構造函數的類型(值類型與引用類型),如果有多個約束,則此約束必須放在最后面;

轉換類型約束(T:基類名,T:接口名,T:U),確保傳遞的類型實參必須是繼承該約束的類或接口;

組合約束,包含多個約束;

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()