摘要:[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 出來。
三小俠 小弟獻醜,歡迎指教