logo
CSharp_Prog_Guide

Пример 3

В следующем примере кода демонстрируется использование инициализатора базового класса. Класс Circle является производным от основного класса Shape, а класс Cylinder является производным от класса Circle. Конструктор каждого производного класса использует инициализатор своего базового класса.

abstract class Shape

{

public const double pi = System.Math.PI;

protected double x, y;

public Shape(double x, double y)

{

this.x = x;

this.y = y;

}

public abstract double Area();

}

class Circle : Shape

{

public Circle(double radius)

: base(radius, 0)

{

}

public override double Area()

{

return pi * x * x;

}

}

class Cylinder : Circle

{

public Cylinder(double radius, double height)

: base(radius)

{

y = height;

}

public override double Area()

{

return (2 * base.Area()) + (2 * pi * x * y);

}

}

class TestShapes

{

static void Main()

{

double radius = 2.5;

double height = 3.0;

Circle ring = new Circle(radius);

Cylinder tube = new Cylinder(radius, height);

System.Console.WriteLine("Area of the circle = {0:F2}", ring.Area());

System.Console.WriteLine("Area of the cylinder = {0:F2}", tube.Area());

}

}

Output:

Area of the circle = 19.63 Area of the cylinder = 86.39

-----------