亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

深入解析C#中的abstract抽象類

2020-01-24 01:18:39
字體:
來源:轉載
供稿:網友

抽象類和類成員
通過在類定義前面放置關鍵字 abstract,可以將類聲明為抽象類。例如:

public abstract class A{  // Class members here.}

抽象類不能實例化。抽象類的用途是提供一個可供多個派生類共享的通用基類定義。例如,類庫可以定義一個抽象類,將其用作多個類庫函數的參數,并要求使用該庫的程序員通過創建派生類來提供自己的類實現。
抽象類也可以定義抽象方法。方法是將關鍵字 abstract 添加到方法的返回類型的前面。例如:

public abstract class A{  public abstract void DoWork(int i);}

抽象方法沒有實現,所以方法定義后面是分號,而不是常規的方法塊。抽象類的派生類必須實現所有抽象方法。當抽象類從基類繼承虛方法時,抽象類可以使用抽象方法重寫該虛方法。例如:

// compile with: /target:librarypublic class D{  public virtual void DoWork(int i)  {    // Original implementation.  }}public abstract class E : D{  public abstract override void DoWork(int i);}public class F : E{  public override void DoWork(int i)  {    // New implementation.  }}

如果將 virtual 方法聲明為 abstract,則該方法對于從抽象類繼承的所有類而言仍然是虛方法。繼承一個抽象方法的類不能訪問該方法的原始實現。在上一個示例中,類 F 中的 DoWork 不能調用類 D 中的 DoWork。通過這種方式,抽象類可以強制派生類為虛方法提供新的方法實現。

定義抽象屬性

下面的示例演示如何定義抽象屬性。抽象屬性聲明不提供屬性訪問器的實現,它只聲明該類支持屬性,而將訪問器實現留給派生類。下面的示例演示如何實現從基類繼承的抽象屬性。
此示例由三個文件組成,其中每個文件都單獨編譯,產生的程序集由下一次編譯引用:

  • abstractshape.cs:包含抽象 Area 屬性的 Shape 類。
  • shapes.cs:Shape 類的子類。
  • shapetest.cs:測試程序,它顯示某些 Shape 派生對象的面積。

若要編譯該示例,請使用以下命令:

csc abstractshape.cs shapes.cs shapetest.cs

這樣將生成可執行文件 shapetest.exe。
該文件聲明的 Shape 類包含 double 類型的 Area 屬性。

// compile with: csc /target:library abstractshape.cspublic abstract class Shape{  private string name;  public Shape(string s)  {    // calling the set accessor of the Id property.    Id = s;  }  public string Id  {    get    {      return name;    }    set    {      name = value;    }  }  // Area is a read-only property - only a get accessor is needed:  public abstract double Area  {    get;  }  public override string ToString()  {    return Id + " Area = " + string.Format("{0:F2}", Area);  }}

屬性的修飾符就放置在屬性聲明中。例如:

public abstract double Area

聲明抽象屬性時(如本示例中的 Area),指明哪些屬性訪問器可用即可,不要實現它們。在此示例中,只有一個 get 訪問器可用,因此該屬性是只讀的。
下面的代碼演示 Shape 的三個子類,并演示它們如何重寫 Area 屬性來提供自己的實現。

// compile with: csc /target:library /reference:abstractshape.dll shapes.cspublic class Square : Shape{  private int side;  public Square(int side, string id)    : base(id)  {    this.side = side;  }  public override double Area  {    get    {      // Given the side, return the area of a square:      return side * side;    }  }}public class Circle : Shape{  private int radius;  public Circle(int radius, string id)    : base(id)  {    this.radius = radius;  }  public override double Area  {    get    {      // Given the radius, return the area of a circle:      return radius * radius * System.Math.PI;    }  }}public class Rectangle : Shape{  private int width;  private int height;  public Rectangle(int width, int height, string id)    : base(id)  {    this.width = width;    this.height = height;  }  public override double Area  {    get    {      // Given the width and height, return the area of a rectangle:      return width * height;    }  }}

下面的代碼演示一個測試程序,它創建若干 Shape 派生對象,并輸出它們的面積。

// compile with: csc /reference:abstractshape.dll;shapes.dll shapetest.csclass TestClass{  static void Main()  {    Shape[] shapes =    {      new Square(5, "Square #1"),      new Circle(3, "Circle #1"),      new Rectangle( 4, 5, "Rectangle #1")    };    System.Console.WriteLine("Shapes Collection");    foreach (Shape s in shapes)    {      System.Console.WriteLine(s);    }  }}

輸出:

  Shapes Collection  Square #1 Area = 25.00  Circle #1 Area = 28.27  Rectangle #1 Area = 20.00

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产一区二区三区久久久| 亚洲男人天堂久| 亚洲男女自偷自拍图片另类| 精品一区二区三区电影| 久久亚洲综合国产精品99麻豆精品福利| 国产精品久久久久久久9999| 久久久成人的性感天堂| 亚洲人成电影网站色…| 欧美激情高清视频| 久久影院模特热| 色香阁99久久精品久久久| 欧美大片免费观看在线观看网站推荐| 色噜噜狠狠色综合网图区| 久久99久国产精品黄毛片入口| 欧美日韩成人免费| 亚洲精品一区二三区不卡| 日韩在线视频二区| 亚洲天堂av高清| 精品日韩中文字幕| 欧美寡妇偷汉性猛交| 国产丝袜一区二区三区免费视频| 欧美日韩亚洲一区二区| 91精品国产乱码久久久久久蜜臀| 欧美日韩国内自拍| 中文日韩在线视频| 日韩免费在线观看视频| 欧美日韩亚洲天堂| 国产极品精品在线观看| 亚洲国产三级网| 欧美与黑人午夜性猛交久久久| 一区二区三区日韩在线| 日韩av大片免费看| 亚洲第一区中文字幕| 51色欧美片视频在线观看| 欧美日韩国产限制| 日韩欧亚中文在线| 自拍偷拍亚洲区| 91精品在线观看视频| 在线观看视频99| 国产精品十八以下禁看| 在线观看欧美成人| 亚洲www永久成人夜色| 国产一级揄自揄精品视频| 欧美激情喷水视频| 欧美区二区三区| 亚洲精选一区二区| 亚洲国产第一页| 欧美交受高潮1| 久久久av一区| 不卡av在线播放| 日韩网站免费观看| 国产精品99久久99久久久二8| 国产精品精品国产| 久久久精品影院| 夜夜嗨av一区二区三区四区| 国产成人精品电影久久久| 亚洲精品乱码久久久久久按摩观| 亚洲美女免费精品视频在线观看| 欧美成人精品三级在线观看| 色妞欧美日韩在线| 亚洲xxxx妇黄裸体| 日韩av黄色在线观看| 日韩精品在线免费观看视频| 91av在线免费观看视频| 国产香蕉精品视频一区二区三区| 国内精品一区二区三区四区| 日韩最新在线视频| 国产精品久久久久久久久男| 日韩av在线一区| 欧美不卡视频一区发布| 国产亚洲欧洲高清| 久久夜色精品国产亚洲aⅴ| 国产成人久久久精品一区| 激情av一区二区| 夜夜嗨av色一区二区不卡| 久久精品久久久久久| 成人午夜一级二级三级| 亚洲国产日韩欧美在线动漫| 国产精品久久久久久久久免费看| 草民午夜欧美限制a级福利片| 夜夜嗨av色综合久久久综合网| 欧美日韩精品在线视频| 最近中文字幕mv在线一区二区三区四区| 国产日韩在线一区| 91av免费观看91av精品在线| 欧美丰满老妇厨房牲生活| 国产精品久久久久9999| 日韩h在线观看| 欧美另类极品videosbest最新版本| 欧美日韩一区二区在线播放| 亚洲成人精品av| 91成人性视频| 国产精品v日韩精品| 国产精品视频一区二区三区四| 中文字幕国产日韩| 精品久久久久久久大神国产| 一本久久综合亚洲鲁鲁| 亚洲aⅴ男人的天堂在线观看| 一本大道香蕉久在线播放29| 国产日本欧美一区二区三区| 日韩在线观看电影| 国产日韩专区在线| 日韩一区二区三区xxxx| 成人美女免费网站视频| 欧美一级成年大片在线观看| 日韩视频免费大全中文字幕| 中文.日本.精品| 亚洲精品99久久久久中文字幕| 亚洲成年网站在线观看| 亚洲黄页视频免费观看| 亚洲精品国产综合区久久久久久久| 国产成人综合久久| 欧美成人免费大片| 在线电影av不卡网址| 国产精品爽爽ⅴa在线观看| 久久人人爽人人| 欧美电影免费观看电视剧大全| 日韩免费在线免费观看| 国产成人精品久久二区二区91| 欧美日韩亚洲网| 日本欧美黄网站| 欧美在线激情视频| 日本欧美精品在线| 亚洲国产日韩欧美综合久久| 粗暴蹂躏中文一区二区三区| 欧美黑人又粗大| 日韩福利在线播放| 日韩免费精品视频| 一区二区三区视频免费| 欧美极品少妇xxxxⅹ裸体艺术| 91精品国产高清久久久久久久久| 日韩av中文字幕在线播放| 久久久av网站| 国内精品久久影院| 欧美孕妇与黑人孕交| 久久久在线视频| 亚洲丝袜av一区| 久久影视电视剧凤归四时歌| 在线观看精品自拍私拍| 欧洲成人免费aa| 中文字幕亚洲欧美一区二区三区| 亚洲人成电影在线播放| 日韩精品久久久久久福利| 欧美精品在线免费播放| 亚洲在线观看视频网站| 亚洲精品v欧美精品v日韩精品| 欧美激情免费观看| 日韩av在线影院| 国产精品av在线播放| 亚洲丁香久久久| 国产欧美日韩中文字幕在线| 欧美精品激情在线| 91精品久久久久久久久不口人| 国产精品自拍偷拍视频| 欧美又大粗又爽又黄大片视频| 成人在线视频网| 久久视频在线直播| 亚洲一级片在线看| 久久精品久久久久久| 国产精品免费福利| 亚洲国产婷婷香蕉久久久久久| 正在播放亚洲1区| 久久精品视频在线观看| 日韩av在线最新|