C#抽象類別

來源:互聯網
上載者:User

標籤:

1.抽象成員必須標記為abstract,並且不能有任何實現。
2.抽象成員必須在抽象類別中。
3.抽象類別不能被執行個體化

4.子類繼承抽象類別後,必須把父類中的所有抽象成員都重寫。

(除非子類也是一個抽象類別,則可以不重寫)
5.抽象成員的存取修飾詞不能是private
6.在抽象類別中可以包含執行個體成員。
並且抽象類別的執行個體成員可以不被子類實現

7.抽象類別是有建構函式的。雖然不能被執行個體化。


8、如果父類的抽象方法中有參數,那麼。繼承這個抽象父類的子類在重寫父類的方法的時候必須傳入對應的參數。

如果抽象父類的抽象方法中有傳回值,那麼子類在重寫這個抽象方法的時候 也必須要傳入傳回值。

 

 class Class1    {        static void Main(string[] args)        {            //抽象類別和介面不允許執行個體化,但允許裝入子類              //父類裡裝的是子類,但是表現出來的是父類,調用的還是父類成員,            //但父類是抽像類,方法被子類成員重寫,所以調用出來的是子類方法            Animal an = new MaoMi();            an.Jiao();            Animal xg = new XiaoGou();            xg.Jiao();            xg.jj();            Console.ReadKey();        }    }    //使用 abstract 聲明一個抽象類別 ,類似於介面,抽象類別多定義於使用規範,在多人協同編寫中代碼調用類方法一式    public abstract class Animal    {        //抽像方法        public abstract void Jiao();              private   string _name;        //抽像屬性        public abstract string Name        {            get;            set;        }        public Animal(int age)        {            this.Name = _name;        }        public Animal()        { }        public void jj()        {            Console.Write("這裡是執行個體化子類後,可以調用的");        }    }    //聲明一個子類    public class MaoMi:Animal    {        public override void Jiao()        {            Console.WriteLine("小貓喵喵叫");        }        public override string Name        {            get            {                throw new NotImplementedException();            }            set            {                throw new NotImplementedException();            }        }    }    //聲明一個子類    public class XiaoGou : Animal    {        public override void Jiao()        {            Console.WriteLine("小狗汪汪叫");        }        public override string Name        {            get            {                throw new NotImplementedException();            }            set            {                throw new NotImplementedException();            }        }    }

 


======
如果父類中的方法有預設的實現,並且父類需要被執行個體化,這時可以考慮將父類定義成一個普通類,用虛方法來實現多態。

如果父類中的方法沒有預設實現,父類也不需要被執行個體化,則可以將該類定義為抽象類別。

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.