C#抽象類別和介面

來源:互聯網
上載者:User

標籤:

抽象類別和介面有什麼區別?有了抽象類別為什麼還要介面?

介面和抽象類別的相同點是都不能執行個體化,不同點是介面中的方法都沒有方法體,而抽象類別則不然,除了抽象方法沒有方法體外,其他方法都有方法體。

原因是:在C#中,類只能繼承一個類,但可繼承多個介面。

抽象類別:

1、不能執行個體化

2、抽象方法必須被子類重寫

3、如果類中包含有抽象方法,該類必須定義為抽象類別

抽象類別前加abstract。

抽象方法在傳回值前加abstract,沒有方法體,直接在括弧後加分號。

1、包含有抽象方法的類一定為抽象類別

2、抽象類別不一定包含抽象方法

 

虛方法是用來實現多態的,為了使子類的執行個體完全接替來自父類的成員,父類必須將該成員聲明為虛擬,這是通過在該成員的訪問類型前加virtual關鍵字來實現的。

子類可以選擇使用override關鍵字將父類實現替換為它自己的實現,這就是方法重寫,當然也可以不重寫。

class Animal{    public virtual void Shout()    {        Console.WriteLine("動物叫!");    }}class Cat:Animal{    public override void Shout()    {        Console.WriteLine("貓叫!");    }}class Dog: Animal{    public override void Shout()    {        Console.WriteLine("狗叫!");    }}class Program{    static void Main(string[] args)    {        Animal[] animals=new Animal[2];        animals[0]=new Cat();        animals[1]=new Dog();        foreach (var animal in animals)        {            animal.Shout();        }        Console.ReadLine();    }}

 

C#抽象類別和介面

聯繫我們

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