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

首頁 > 編程 > C# > 正文

詳解C#面相對象編程中的繼承特性

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

繼承(加上封裝和多態性)是面向對象的編程的三個主要特性(也稱為“支柱”)之一。 繼承用于創建可重用、擴展和修改在其他類中定義的行為的新類。其成員被繼承的類稱為“基類”,繼承這些成員的類稱為“派生類”。派生類只能有一個直接基類。但是,繼承是可傳遞的。如果 ClassB 派生出 ClassC,ClassA 派生出 ClassB,則 ClassC 會繼承 ClassB 和 ClassA 中聲明的成員。

注意
結構不支持繼承,但可以實現接口。

從概念上來說,派生類是基類的特例。 例如,如果您有一個基類 Animal,則可以有一個名為 Mammal 的派生類和一個名為 Reptile 的派生類。 Mammal 是一個 Animal,Reptile 也是一個 Animal,但每個派生類均表示基類的不同專用化。
定義一個類從其他類派生時,派生類隱式獲得基類的除構造函數和析構函數以外的所有成員。因此,派生類可以重用基類中的代碼而無需重新實現這些代碼??梢栽谂缮愔刑砑痈喑蓡T。派生類以這種方式擴展基類的功能。
下圖演示一個 WorkItem 類,該類表示某業務流程中的一個工作項。和所有的類一樣,該類派生自 System.Object 并繼承其所有方法。 WorkItem 添加了自己的五個成員。其中包括一個構造函數,因為構造函數不能繼承。類ChangeRequest 繼承自 WorkItem 并表示特定種類的工作項。 ChangeRequest 在它從 WorkItem 和 Object 繼承的成員中另外添加了兩個成員。它必須添加其自己的構造函數,還添加 originalItemID。利用屬性 originalItemID,可將 ChangeRequest 實例與更改請求將應用到的原始 WorkItem 相關聯。

2016128171832088.jpeg (449×302)

類繼承
下面的示例演示如何以 C# 表示上圖所示的類關系。該示例還演示 WorkItem 如何重寫虛方法 Object.ToString,以及 ChangeRequest 類如何繼承該方法的 WorkItem 實現。

// WorkItem implicitly inherits from the Object class.public class WorkItem{  // Static field currentID stores the job ID of the last WorkItem that  // has been created.  private static int currentID;  //Properties.  protected int ID { get; set; }  protected string Title { get; set; }  protected string Description { get; set; }  protected TimeSpan jobLength { get; set; }  // Default constructor. If a derived class does not invoke a base-  // class constructor explicitly, the default constructor is called  // implicitly.   public WorkItem()  {    ID = 0;    Title = "Default title";    Description = "Default description.";    jobLength = new TimeSpan();  }  // Instance constructor that has three parameters.  public WorkItem(string title, string desc, TimeSpan joblen)  {    this.ID = GetNextID();    this.Title = title;    this.Description = desc;    this.jobLength = joblen;  }  // Static constructor to initialize the static member, currentID. This  // constructor is called one time, automatically, before any instance  // of WorkItem or ChangeRequest is created, or currentID is referenced.  static WorkItem()  {    currentID = 0;  }  protected int GetNextID()  {    // currentID is a static field. It is incremented each time a new    // instance of WorkItem is created.    return ++currentID;  }  // Method Update enables you to update the title and job length of an  // existing WorkItem object.  public void Update(string title, TimeSpan joblen)  {    this.Title = title;    this.jobLength = joblen;  }  // Virtual method override of the ToString method that is inherited  // from System.Object.  public override string ToString()  {    return String.Format("{0} - {1}", this.ID, this.Title);  }}// ChangeRequest derives from WorkItem and adds a property (originalItemID) // and two constructors.public class ChangeRequest : WorkItem{  protected int originalItemID { get; set; }  // Constructors. Because neither constructor calls a base-class   // constructor explicitly, the default constructor in the base class  // is called implicitly. The base class must contain a default   // constructor.  // Default constructor for the derived class.  public ChangeRequest() { }  // Instance constructor that has four parameters.  public ChangeRequest(string title, string desc, TimeSpan jobLen,             int originalID)  {    // The following properties and the GetNexID method are inherited     // from WorkItem.    this.ID = GetNextID();    this.Title = title;    this.Description = desc;    this.jobLength = jobLen;    // Property originalItemId is a member of ChangeRequest, but not     // of WorkItem.    this.originalItemID = originalID;  }}class Program{  static void Main()  {    // Create an instance of WorkItem by using the constructor in the     // base class that takes three arguments.    WorkItem item = new WorkItem("Fix Bugs",                   "Fix all bugs in my code branch",                   new TimeSpan(3, 4, 0, 0));    // Create an instance of ChangeRequest by using the constructor in    // the derived class that takes four arguments.    ChangeRequest change = new ChangeRequest("Change Base Class Design",                         "Add members to the class",                         new TimeSpan(4, 0, 0),                         1);    // Use the ToString method defined in WorkItem.    Console.WriteLine(item.ToString());    // Use the inherited Update method to change the title of the     // ChangeRequest object.    change.Update("Change the Design of the Base Class",      new TimeSpan(4, 0, 0));    // ChangeRequest inherits WorkItem's override of ToString.    Console.WriteLine(change.ToString());    // Keep the console open in debug mode.    Console.WriteLine("Press any key to exit.");    Console.ReadKey();  }}

輸出:

  1 - Fix Bugs  2 - Change the Design of the Base Class

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情精品久久久久久免费印度| 国产精品久久久久久av福利| 国产精品女主播| 日韩av片永久免费网站| 国产成人av网| 久久中文字幕视频| 欧美激情久久久| 欧美美女操人视频| 日本精品免费观看| 国产精品亚洲一区二区三区| 国产精品视频中文字幕91| 久久免费福利视频| 中文字幕精品网| 亚洲自拍偷拍视频| 国产成人精品最新| 亚洲精品动漫久久久久| 精品国内产的精品视频在线观看| 久久免费少妇高潮久久精品99| 欧美激情视频网址| 日韩在线视频线视频免费网站| 亚洲人高潮女人毛茸茸| 亚洲视频axxx| 国产在线播放不卡| 国产主播欧美精品| 亚洲国产毛片完整版| 91精品国产91久久久久久不卡| 亚洲男人天堂九九视频| 欧美精品videossex88| 久久久精品中文字幕| 成人激情春色网| 亚洲xxx自由成熟| 日本在线精品视频| 久久久av电影| 欧美日本中文字幕| 欧美理论电影网| 亚洲三级免费看| 伊人伊成久久人综合网站| 久久久久久久成人| 欧美日韩一区二区三区在线免费观看| 亚洲free性xxxx护士hd| 搡老女人一区二区三区视频tv| 久久久久北条麻妃免费看| 欧美日韩ab片| 亚洲精品福利免费在线观看| 欧美激情亚洲一区| 91精品国产91久久久久久吃药| 成人免费激情视频| 九九热r在线视频精品| 亚洲天堂av图片| 91精品视频在线播放| 米奇精品一区二区三区在线观看| 全亚洲最色的网站在线观看| 国产精品色午夜在线观看| 一区二区三区www| 亚洲欧美国产高清va在线播| 91最新国产视频| 国产成人精品一区二区三区| 欧美中文在线观看国产| 色午夜这里只有精品| 精品日韩中文字幕| 国产成人精品在线观看| 国产成人精彩在线视频九色| 欧美一区二区三区免费视| 亚洲日韩中文字幕在线播放| 亚洲一级片在线看| 91高清视频免费| 亚洲白拍色综合图区| 欧美激情xxxxx| 午夜精品国产精品大乳美女| 亚洲成人黄色在线观看| 亚洲激情视频在线| 国产精品电影久久久久电影网| 亚洲欧美国产日韩天堂区| 欧美电影免费观看大全| 国产精品亚洲第一区| 91av视频在线观看| 精品一区二区电影| 久久精品国产一区二区电影| 精品人伦一区二区三区蜜桃免费| 国产在线不卡精品| 久久亚洲精品中文字幕冲田杏梨| 中文精品99久久国产香蕉| 亚洲成色777777女色窝| 国产精品久久久999| 亚洲精品美女在线观看| 国产成人综合av| 98视频在线噜噜噜国产| 亚洲欧美日韩在线一区| 国产视频丨精品|在线观看| 久久久999国产精品| 中文字幕日韩av综合精品| 一本一道久久a久久精品逆3p| 91欧美视频网站| 欧美日本精品在线| 成人国产精品久久久| 欧美大全免费观看电视剧大泉洋| 亚洲美女av电影| 欧美国产日韩二区| 国产偷亚洲偷欧美偷精品| 欧美精品激情在线观看| 欧美国产精品日韩| 成人在线国产精品| 国产精品久久久久久久久久久不卡| 国产精品美女在线观看| 亚洲人av在线影院| 亚洲视频999| 亚洲一区999| 久久久噜噜噜久噜久久| 日韩福利伦理影院免费| 欧美在线观看网站| 国产精品欧美一区二区| 国产中文日韩欧美| 国产精品旅馆在线| 国内精品久久影院| 国产98色在线| 亚洲欧美一区二区三区四区| 综合136福利视频在线| 国产精品美女久久久久久免费| 欧美肥婆姓交大片| 亚洲精品福利视频| 啪一啪鲁一鲁2019在线视频| 中文字幕精品久久| 国产精选久久久久久| 欧美老女人bb| 国产在线观看精品一区二区三区| 亚洲成人黄色网址| 亚洲天堂2020| 欧美激情xxxx性bbbb| 亚洲综合大片69999| 国产亚洲一级高清| 欧美性受xxxx白人性爽| 亚洲成人激情在线观看| 日韩视频在线一区| 国产精品精品视频| 欧美一区二区三区四区在线| 欧美大人香蕉在线| 国产精品一区二区三区免费视频| 人人做人人澡人人爽欧美| 日韩视频第一页| 青青草原成人在线视频| 欧美一区二区三区四区在线| 国产精品白嫩美女在线观看| 欧美一区二区三区免费视| 日韩电视剧免费观看网站| 日韩暖暖在线视频| 欧洲成人性视频| 亚洲国产精品久久久久秋霞不卡| 国产精品免费久久久| 国产伦精品一区二区三区精品视频| 国产精品91一区| 国产精品av电影| 狠狠躁天天躁日日躁欧美| 91久久久久久久| 欧美二区乱c黑人| 色爱av美腿丝袜综合粉嫩av| 日韩精品中文字幕视频在线| 欧美多人乱p欧美4p久久| 欧美性高潮在线| 亚洲视频999| 欧美交受高潮1| 亚洲国产精品久久久久秋霞蜜臀| 欧美精品在线观看91| 国产女人精品视频| 国产精品视频大全|