C# 中多态

多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。

 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()又不相同。这就是多态性。

 

猜你喜欢

转载自www.cnblogs.com/zhaoliankun/p/9208785.html