同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。
編譯時的多態性是通過重載來實現的,對於非虛的成員來說,系統在編譯時,根據傳遞的參數、返回的類型等信息決定實現何種操作。
運行時的多態性就是指知道系統運行時,才根據實際情況決定實現何種操作。
C#中運行時的多態性是通過覆寫虛成員實現。
方法名必須相同;
參數列表必須不相同;
返回值類型可以不相同。
子類為滿足自己的需要來重復定義某個方法的不同實現。通過override關鍵字來實現覆寫,並且只有虛方法和抽象方法才能被覆寫。
特點:
方法名稱相同;
參數列表相同;
返回值類型相同。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication13 { class Program {//調用 static void Main(string[] args) { Square tt = new Square(); Console.WriteLine(tt.Getsides()); Triangle dd = new Triangle(); Console.WriteLine(dd.Getsides()); } } //////定義一個Sharp圖形類 /// abstract public class Sharp { public abstract int Getsides(); } ////// //派生類:Square和Triangle /// public class Square : Sharp { public override int Getsides() { return 1; } } public class Triangle : Sharp { public override int Getsides() { return 2; } } }