多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace PolymorphismApplication 7 { 8 /// <summary> 9 /// 几何图形,抽象基类 10 /// </summary> 11 abstract class Geometric 12 { 13 public abstract double Area(); 14 } 15 16 /// <summary> 17 /// 正方形 18 /// </summary> 19 class Square : Geometric 20 { 21 private double side; 22 public Square(double a = 0) 23 { 24 side = a; 25 } 26 public override double Area() 27 { 28 Console.WriteLine("Square 类的面积:"); 29 return (side * side); 30 } 31 } 32 /// <summary> 33 /// 长方形 34 /// </summary> 35 class Rectangle : Geometric 36 { 37 private double length; 38 private double width; 39 public Rectangle(double a = 0, double b = 0) 40 { 41 length = a; 42 width = b; 43 } 44 public override double Area() 45 { 46 Console.WriteLine("Rectangle 类的面积:"); 47 return (width * length); 48 } 49 } 50 /// <summary> 51 /// 圆型 52 /// </summary> 53 class Circle : Geometric 54 { 55 private double r; 56 public Circle(double a = 0) 57 { 58 r = a; 59 } 60 public override double Area() 61 { 62 Console.WriteLine("Circle 类的面积:"); 63 return (3.14*r*r); 64 } 65 } 66 67 class Program 68 { 69 static void Main(string[] args) 70 { 71 Square s = new Square(5); 72 double sa = s.Area(); 73 Console.WriteLine("面积: {0}", sa); 74 Rectangle r = new Rectangle(10, 7); 75 double ra = r.Area(); 76 Console.WriteLine("面积: {0}", ra); 77 Circle c = new Circle(1); 78 double ca = c.Area(); 79 Console.WriteLine("面积: {0}", ca); 80 Console.ReadKey(); 81 } 82 } 83 }
抽象基类Geometric中定义了抽象方法Area public abstract double Area();
不同的子类继承了基类Geometric,分别实现了Area(),但是正方形和长方形和圆型的Area()又不相同。这就是多态性。