接下来的三个类Circle、Rectangle和Square都从Shape类派生,他们都具备Shape所描述的特征。这能够从他们的定义中看出来,他们的声明中都带有“public class:Shape {”,这个“: Shape”就表示当前的类从Shape类派生。由于这三个类都从Shape派生,他们自动拥有Shape中定义的任何public或protected实例变量,即Circle、 Rectangle和Square包含了实例变量color。
每一个Sharp的派生类都有自己的构造函数,负责调用父类Shape的构造函数配置公共的实例变量(color)连同配置自己特有的实例变量。例如“public Circle(string color, double radius) : base(color)”这个语句中,“: base(color)”就表示用参数color调用父类的构造函数。
最后我们来看一下getArea()方法,他是个多态性的示范。任何形状都有getArea()方法,但是根据对象是圆、长方形还是正方形,具体调用的方法也不同。
要运行这个例子,先把任何文档保存到同一目录,然后执行下面的命令:
csc /target:library /out:Shapes.dll
Shapes.cs Circle.cs Rectangle.cs Square.cs
然后执行:
csc /reference:Shapes.dll Example3.cs
现在,假如我们运行Example3.exe,将得到如下输出:
圆的颜色是orange他的面积是28.274333882308138.
正方形的颜色是green他的面积是16.
长方形的颜色是red 他的面积是32.



