--virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 --virtual 修饰符不能与 static、abstract, private 或 override 修饰符一起使用。 - class TestClass
- {
- public class Dimensions
- {
- public const double PI = Math.PI;
- protected double x, y;
- public Dimensions()
- {
- }
- public Dimensions(double x, double y)
- {
- this.x = x;
- this.y = y;
- }
-
- public virtual double Area()
- {
- return x * y;
- }
- }
-
- public class Circle : Dimensions
- {
- public Circle(double r) : base(r, 0)
- {
- }
-
- public override double Area()
- {
- return PI * x * x;
- }
- }
-
- class Sphere : Dimensions
- {
- public Sphere(double r) : base(r, 0)
- {
- }
-
- public override double Area()
- {
- return 4 * PI * x * x;
- }
- }
-
- class Cylinder : Dimensions
- {
- public Cylinder(double r, double h) : base(r, h)
- {
- }
-
- public override double Area()
- {
- return 2 * PI * x * x + 2 * PI * x * y;
- }
- }
-
- static void Main()
- {
- double r = 3.0, h = 5.0;
- Dimensions c = new Circle(r);
- Dimensions s = new Sphere(r);
- Dimensions l = new Cylinder(r, h);
- // Display results:
- Console.WriteLine("Area of Circle = {0:F2}", c.Area());
- Console.WriteLine("Area of Sphere = {0:F2}", s.Area());
- Console.WriteLine("Area of Cylinder = {0:F2}", l.Area());
- }
- }
- /*
- Output:
- Area of Circle = 28.27
- Area of Sphere = 113.10
- Area of Cylinder = 150.80
- */
复制代码
|