C#基礎——abstract

來源:互聯網
上載者:User

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

      抽象類別具有以下特性:抽象類別不能執行個體化;抽象類別可以包含抽象方法和抽象訪問器;不能用sealed修飾符修改抽象類別,因為sealed會使得抽象類別無法被繼承;從抽象類別派生的非抽象類別必須包括繼承的所有抽象方法和抽象訪問器的實實現。

      在方法或屬性聲明中使用abstract修飾符以指示方法或屬性不包含實現。抽象方法具有以下特性:抽象方法是隱式的虛方法;只允許在抽象類別中使用抽象方法聲明;因為抽象方法聲明不提供實際的實現,所以沒有方法體,方法什麼只是以一個分號結束,並且在簽名後沒有大括弧({});實現由一個重寫方法override提供,此重寫方法是非抽象類別的一個成員;在抽象方法聲明中使用static或virtual修飾符是錯誤的。

  1. //抽象類別不能是密封的或靜態//abstract sealed class TestClass{}//abstract static class TestClass{}
  2. abstract class BaseClass{    protected int _x=100;    protected int _y=150;    public abstract void AbstractMethod();    public abstract int X {get;}    public abstract  int Y {get;}    //靜態成員不能標記為abstract    //public static abstract void StaticMethod();}class DerivedClass:BaseClass{    public override void AbstractMethod()    {        _x++;        _y++;    }    public override int X{ get{return _x+10;}}    public override int Y{get{return _y+10;}}    public static void Main()    {        DerivedClass c=new DerivedClass();        c.AbstractMethod();        Console.WriteLine("x = {0}, y = {1}", c.X, c.Y);        Console.WriteLine();        Console.WriteLine("Press Enter to close this window.");        Console.ReadLine();    }}

聯繫我們

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