C#之Abstract、Vitrual、Override

來源:互聯網
上載者:User

標籤:

Abstract        

    abstract修飾符可以和類、方法、屬性、索引器及事件一起使用。在類聲明中使用 abstract修飾符以指示某個類只能是其他類的基類。標記為抽象或包含在抽象類別中的成員必須通過從抽象類別派生的類來實現。

1.抽象類別:

用它修飾的類稱為抽象類別,抽象類別不能執行個體化。

抽象類別中,包括抽象方法,還可以有抽象屬性。(抽象屬性也必須改寫。)
非抽象類別從抽象類別中派生,必須通過改寫來實現所有繼承而來的抽象方法。

如果一個類,從抽象類別中派生,但是沒有對抽象類別中的方法進行實現的話,那麼這個類必須是抽象類別。即衍生類別也是抽象類別。

2.抽象方法:

抽象方法只能在抽象類別中聲明。不能再使用static和virtual修飾

抽象方法只給出方法原形。不能在抽象方法中包含任何可執行代碼,沒有方法體,用分號結束。

抽象方法在衍生類別中不能使用base關鍵字訪問。 

    class Program    {        static void Main()        {            DeriverC2 tt =new DeriverC2();       //執行個體化DeriverC類,抽象類別不能執行個體化            tt.function1();        }    }    abstract class BaseC                         //抽象類別;    {        public abstract void function1();        //抽象類別中的抽象方法;    }    abstract class DeriveC1 : BaseC              //抽象類別繼承抽象類別;    {        public void function2() { }              //抽象類別中的非抽象方法;    }    class DeriverC2 : BaseC                      //非抽象類別繼承抽象類別;    {        public override void function1()         //必須改寫;        {            Console.WriteLine ("類DeriverC2具體實作類別BaseC的抽象方法function1()");        }    }

Virtual

    virtual關鍵字用於修飾方法、屬性、索引器或事件聲明,並且允許在衍生類別中重寫這些對象。

虛擬成員的實現可由衍生類別中的重寫成員更改。例如,此方法可被任何繼承它的類重寫。

預設情況下,方法是非虛擬。不能重寫非虛方法

Override

override關鍵字要擴充或修改繼承的方法、屬性、索引器或事件的抽象實現或虛實現,必須使用override 修飾符。

override方法提供從基類繼承的成員的新實現。

通過override 聲明重寫的方法稱為重寫基方法。重寫的基方法必須與 override 方法具有相同的簽名。

不能重寫非虛方法或靜態方法。重寫的基方法必須是virtual、abstract 或 override 的。

override聲明不能更改 virtual 方法的可訪問性。override 方法和 virtual 方法必須具有相同的存取層級修飾符。不能使用修飾符new、static、virtual 或 abstract 來修改 override 方法。

重寫屬性聲明必須指定與繼承屬性完全相同的存取修飾詞、類型和名稱,並且被重寫的屬性必須是virtual、abstract 或 override 的。

總結:

Abstract關鍵字能夠修飾類,抽象類別不能執行個體化,抽象類別可以繼承抽象類別。

Virtual關鍵字修飾的虛方法和Abstract修飾的抽象方法的相同點是都用了override關鍵字進行重寫方法,不同點是抽象方法必須存在於抽象類別中,而子類必須重寫,除非子類也是抽象的。

Override關鍵字,重寫的基方法必須和override方法名字相同,屬性也可以重寫,重寫屬性和繼承屬性有相同的存取修飾詞,類型和名稱。

C#之Abstract、Vitrual、Override

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.