Demonstration of inheritance with some shapes
Shadowing

There is some shadowing going on between Rectangle and Square. 

Rectangle implements IShape, and Square inherits from Rectangle.

As it stands, Square is hiding Rectangles Draw method. This is evident from the following compiler warning:


  Warning   1   'ConsoleApplication1.Square.Draw()' hides inherited member
  'ConsoleApplication1.Rectangle.Draw()'. Use the new keyword if hiding
  was
  intended.


This can pose a problem in the following scenario:

  Square s = new Square();
  s.Draw(); //Square method called

  Rectangle r = new Square();
  r.Draw(); //Rectangle method called!


As you see, this breaks inheritance and will only call the method on Square if the variable is a Square.

Instead, you might want to make the method virtual on Rectangle:

public class Rectangle : IShape
{
    public virtual void Draw()
    {
        Console.WriteLine("Rectangle object draw method\n");
    }
}

public class Square : Rectangle
{
    public override void Draw()
    {
        Console.WriteLine("Square object draw method\n");
    }
}


This will ensure that the correct method is always called.

Line breaks

There is no need to add \n when calling Console.WriteLine. It will add a line break automatically.

Moreover, \n is not the correct method of adding a line break in .NET. Use Environment.NewLine instead.

Misc.

The order of the final print in your example is wrong. It prints before actually assigning shape = new Rectangle().