C#基礎——abstract

iDotNetSpace發表於2010-01-07

     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();
    }
    }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-624593/,如需轉載,請註明出處,否則將追究法律責任。

相關文章