[C#基礎]-繼承教學/應用
拷貝來源:http://msdn.microsoft.com/zh-tw/library/ms173149.aspx
// 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(); } } /* Output: 1 - Fix Bugs 2 - Change the Design of the Base Class */
|
沒有留言:
張貼留言