public int X { get; private set; }
public int Y { get; private set; }
public double Height { get; set; }
public double Width { get; set; }
protected virtual double CalculateArea()
public virtual int GetNumberOfSides()
public virtual void Draw()
Console.WriteLine("Performing base class drawing tasks");
public class Circle : Shape
public double Radius{get; set;}
public override void Draw()
Console.WriteLine("Drawing a circle");
protected override double CalculateArea()
return Math.PI*Math.Pow(Radius,2);
public class Rectangle : Shape
public override void Draw()
Console.WriteLine("Drawing a rectangle");
protected override double CalculateArea()
public class Triangle : Shape
public override void Draw()
Console.WriteLine("Drawing a triangle");
public static void Main()
System.Collections.Generic.List<Shape> shapes = new System.Collections.Generic.List<Shape>();
shapes.Add(new Rectangle());
shapes.Add(new Triangle());
shapes.Add(new Circle());
foreach (Shape s in shapes)
Console.WriteLine("Area =" + s.Area.ToString());