[C#] 多型

  • 18626
  • 0
  • 2009-11-23

摘要:[C#] 多型

定義一個叫做「形狀」的基底類別,則三角型、四邊形、梯形、都是繼承「形狀」(Shape) 這個基本類別而來的;現在,

多邊形可以算面積,可以算周長...等等,可是每個多邊形的面積與周長的算法都不一樣,這時,我們在基底類別,

定義一個計算面積的虛擬方法 (virtual method) CalcArea,叫每個繼承「形狀」的子類別都去複寫 (override) 這個方法:

父類別:

internal class Shape
{
    internal protected virtual int CalcArea()
    {
        return -1;
    }
}
 

子類別:

internal class Triangle : Shape
{
   private int _Bottom = 5;
   private int _Height = 10;
   protected internal override int CalcArea()
  {
       return (_Bottom * _Height) / 2;
  }
}

 

這時我們這樣做:

Shape shape = new Triangle();
MessageBox.Show(shape.CalcArea().ToString());

利用父類別去呼叫子類別的方法,而不用去判斷目前我該宣告甚麼型態的變數去接子類別,使用 這種方法,就可以達到多型的效果。當然這就可以用在許多地方,比方說:

一個 BaseForm 當你使用動態產生時,你不知道現在是會生成哪個子表單,不過你只要利用多形的觀念,

我只要用 BaseForm  的變數去接任一子表單,如:

BaseForm Parent = new ChildForm();

都可以 Show 出來。

 

三小俠  小弟獻醜,歡迎指教