C#面向對象基礎

Public 表示它所修飾的類成員能夠容許其餘任何類來訪問,俗稱公有的。數組

Private 表示只容許同一個類中的成員訪問,其餘類包括它的子類沒法訪問,俗稱私有的。安全

Protected 表示繼承時子類能夠對基類有徹底訪問權,也就是說,用protected修飾的類成員,對子類公開,但不對其餘類公開。ide

若是在類中的成員沒有加修飾符,則被認爲是private。函數

一般字段是private,即私有變量,而屬性是public,即公有變量。性能

屬性名稱通常首字母大寫,字段通常首字母小寫或前加「_」。編碼

 

構造方法又叫構造函數,其實就是對類進行初始化。構造方法與類同名,無返回值,也不須要void,在new時候調用。設計

全部的類都有構造方法,若是不編碼則系統默認生成空的構造方法,如有定義的構造方法,則默認的構造方法就會失效。對象

 

方法重載提供了建立同名的多個方法的能力,但這些方法須要使用不一樣的參數類型或參數個數有所不一樣。blog

 

屬性是一個方法或一對方法,但在調用它的代碼來看,它是一個字段,及屬性適合一字段的方式使用方法調用的場合。字段是存儲類要知足其設計須要的數據,字段是與類相關的變量。繼承

 

面向對象的三大特徵:封裝、繼承、多態

封裝的好處:第1、良好的封裝可以減小耦合。

                     第2、類內部的實現能夠自由的修改。

                     第3、類具備清晰的對外接口。

 

繼承 對象的繼承表明了一種‘is-a’的關係,若是兩個對象A和B,能夠描述爲‘B是A’,則代表B能夠繼承A。

若是子類繼承於父類:第1、子類擁有父類非private的屬性和功能

          第2、子類具備本身的屬性和功能,即子類能夠擴展父類沒有的屬性和功能。

                            第3、子類還能夠以本身的方式實現父類的功能(方法)

子類從它的父類中繼承的成員有方法、域、屬性、事件、索引器。但對於構造方法,它不能被繼承,只能被調用。對於調用父類的成員,能夠用base關鍵字。

 

多態表示不一樣的對象能夠執行相同的操做,但要經過它們本身的代碼來執行。

第1、   子類以父類的身份出現。

第2、   子類在工做時以本身的方式來實現。

第3、   子類以父類的身份出現時,子類特有的屬性和方法不可使用。

爲了使子類的實例徹底接替來自父類的類成員,父類必須將該成員聲明爲虛擬的。這是經過在該成員的返回類型以前添加virtual關鍵字來實現。子類能夠選擇使用override關鍵字,將父類實現替換爲它本身的實現,這就是方法重寫Override,或者叫作方法覆蓋。

注:一般虛擬的是方法,但其實除了字段不能是虛擬的,屬性、事件‘索引器均可以是虛擬的。儘管方法能夠是虛擬的,但虛擬方法仍是有方法體,能夠實際作些事情。

對象的生命必須是父類,而不是子類,實例化的對象是子類,這才能實現多態。多態的原理是當方法被調用時,不管對象是否被轉換爲其父類,都只有位於對象繼承鏈最末端的方法實現會被調用。也就是說,虛方法是按照其運行時的類型而非編譯時類型進行動態綁定調用的。

例如:動物 animal=new 狗();

         或者

         狗 dog =new 狗();

         動物 animal=dog();

 

抽象類須要注意幾點:

第1、   抽象類不能實例化

第2、   抽象方法是必須被子類重寫的方法。其實抽象方法能夠當作是沒有實現體的虛方法。

第3、   若是類中包含抽象方法,那麼類就必須定義爲抽象類,不管是否還包含其餘通常方法。

抽象類一般表明一個抽象概念,它提供一個繼承的出發點,當設計一個新的抽象類時,必定是用來繼承的,因此,在一個以繼承關係造成的等級結構裏,樹節點應當是具體類,而樹枝節點均應當是抽象類。

 

接口是把隱式公共方法和屬性組合起來,以封裝特定功能的一個集合。一旦類實現了接口,類就能夠支持接口所指定的屬性和成員。聲明接口在語法上與聲明抽象類徹底相同,但不容許提供接口中任何成員的執行方式。

接口不能實例化、不能有構造方法和字段、不能有修飾符、不能聲明虛擬的或靜態的、實現接口的類就必須實現接口中的全部方法和屬性。

一個類能夠支持多個接口,多個類也能夠支持相同的接口。

接口中的方法或屬性不能有修飾符,方法沒有方法體。

interface IChange

{

       string ChangeThing(string thing);

}

 

抽象類能夠給出一些成員的實現,接口卻不能包含成員的實現

抽象類的抽象成員可被子類部分實現,接口的成員須要實現類徹底實現

一個類只能繼承一個抽象類,但能夠實現多個接口

第1、   類是對對象的抽象,抽象類是對類的抽象,接口是對行爲的抽象。

第2、   若是行爲跨越不一樣類的對象,可使用接口;對於一些類似的類對象,用繼承抽象類。

第3、   從設計角度講,抽象類是從子類發現公共的東西,泛化出父類,而後子類繼承父類,而接口是根本不知子類的存在,方法如何實現還不肯定,預先定義。        

 

數組的優勢:在內存中連續存儲,所以能夠快速而容易地從頭至尾遍歷元素,能夠快速修改元素等等。

數組的缺點:建立時必需要制定數組變量的大小,還有在兩個元素之間添加元素也比較困難。

 

集合

ArrayList是命名空間System.Collections下的一部分,它是使用大小可按須要動態增長的數組實現IList接口。ArrayList的容量是ArrayList能夠保存的元數據。ArrayList的默認初始容量爲0.隨着元素添加到ArrayList中,容量會根據須要經過從新分配自動增長。使用整數索引能夠訪問此集合中的元素。此集合中的索引從零開始。

ArrayList的優勢:能夠根據使用大小按需動態增長,不用受事先設置其大小的控制。

                            能夠隨意添加、插入或移除某一範圍的元素,比數組要方便。

ArrayList的缺點:ArrayList不論是什麼對象都接受,全部元素都當作Object,ArrayList不是類型安全的。

                            ArrayList將值類型裝箱爲Object對象,使用集合元素時須要拆箱操做,帶來很大的性能損耗。

泛型是具備佔位符(類型參數)的類、結構、接口和方法,這些佔位符是類、結構、接口和方法所存儲或使用的一個或多個類型的佔位符。泛型集合類能夠將類型參數用做它所存儲的對象的類型的佔位符:類型參數做爲其字段的類型和其方法的參數類型出現。

 

委託與事件

委託是對函數的封裝,能夠看成給方法的特徵制定一個名稱。而事件則是委託的一種特殊形式,當發生有意義的事情時,事件對象處理通知過程。

委託是一種引用方法的類型。一旦爲委託分配了方法,委託將與該方法具備徹底相同的行爲,委託對象用關鍵字delegate來聲明。在發生其餘類或對象關注的事情時,類或對象能夠經過事件通知它們,事件對象用event關鍵字聲明。

 

相關文章
相關標籤/搜索