C# 之 抽象類別與介面

來源:互聯網
上載者:User

標籤:style   blog   http   使用   strong   資料   

抽象類別

    C#同意把類和方法聲明為abstract,即抽象類別和抽象方法。抽象類別通常代表一個抽象概念,它提供一個繼承的出發點,當設計一個新的對象類時,一定是用來繼承的,所以,在一個以繼承關係形成的等級結構裡面,樹分葉節點應當是詳細類,而樹枝節點均應當是抽象類別。抽象類別擁有儘可能多的共同代碼,擁有儘可能少的資料。


注意:1.抽象類別不能執行個體化;2.抽象方法是必須被子類重寫的方法;3.假設類中包括抽象方法,那麼類就必須定義為抽象類別,不論是否還包括其它一般方法。
                                  



介面

    介面是把隱式公用方法和屬性群組合起來,以封裝特定功能的一個集合。一旦類實現了介面,類就能夠支援介面所指定的全部屬性和成員。聲明介面在文法上與聲明抽象類別全然同樣,但不同意提供介面中不論什麼成員的運行方式。所以介面不能執行個體化,不能有構造方法和欄位;不能有修飾符,比方public、private等;不能聲明虛擬或靜態等。還有實現介面的類就必需要實現介面中的全部方法和屬性。

    介面用interface聲明,而不是class,介面名稱前要加‘I‘,介面中的方法或屬性前面不能有修飾符、方法沒有方法體。
                                 



抽象類別與介面的差別:


   類是對對象的抽象,抽象類別是對類的抽象,介面是對行為的抽象。

    假設行為跨越不同類的對象,可使用介面;對於一些相似的類對象,用繼承抽象類別

    從設計角度講,抽象類別是從子類中發現公用的東西,泛化出父類,然後子類繼承父類,而介面是根本不知子類的存在,方法怎樣實現還不確認,預先定義。


    抽象類別和介面都包括能夠由衍生類別繼承的成員。介面和抽象類別都不能直接執行個體化,但能夠聲明這些類型的變數。假設這樣做,就能夠使用多態性把繼承這兩種類型的對象指定給他們的變數。接著通過這些變數來使用這些類型的成員,但不能直接訪問派生對象的其它成員。

    衍生類別僅僅能繼承一個基類,即僅僅能夠直接繼承一個抽象類別(可是能夠用一個繼承鏈包括多個抽象類別)。相反,類能夠使用隨意多個介面,但這不會產生太大的差別——這兩種情況取得的效果是類似的,僅僅是採用介面的方式略有不同。

    抽象類別能夠擁有抽象成員(沒有代碼體,且必須在衍生類別中實現,否則衍生類別本身必須也是抽象的)用非抽象成員(它們擁有代碼體,也能夠是虛擬,這樣就能夠在衍生類別中重寫)。還有一方面,介面成員必須都在使用介面的類上實現——它們沒有代碼體。另外,依照定義,介面成員是公用的(由於它們傾向於在外部使用),但抽象類別的成員能夠是私人的(僅僅要它們不是抽象的)、受保護的、內部的或受保護的內部成員(當中受保護的內部成員僅僅能在應用程式的代碼或衍生類別中訪問)。此外,介面不能包括欄位、建構函式、解構函式、靜態成員或常量。

    抽象類別主要用作對象系列的基類,共用某些主要特性,比如,共同的目的和結構。介面則主要用於類,這些類在基礎水平上有所不同,但仍能夠完畢某些同樣的任務。

    抽象類別能夠給出一些成員的實現,介面卻不包括成員的實現,抽象類別的抽象成員可被子類部分實現,介面的成員須要實作類別全然實現,一個類智能繼承一個抽象類別,但可實現多個介面等等。











相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.