Maha

Maha

  • NA
  • 0
  • 328.2k

NP85 new keyword

Mar 10 2008 9:45 PM

Hi Guys

 

NP85 new keyword

 

In this program what is the purpose of using new keyword because without new keyword program is producing similar output. Anyone knows please explain the reason.

 

Thank you

 

namespace Shapes

{

   using System;

 

   // Abstract base class.

   public abstract class Shape

   {

      protected string petName;

 

      // Constructors.

      public Shape() { petName = "NoName"; }

      public Shape(string s)

      {

         this.petName = s;

      }

 

      // All child objects must define for themselves what it means to be drawn.

      public abstract void Draw();

 

      public string PetName

      {

         get { return this.petName; }

         set { this.petName = value; }

      }

   }

 

   #region rerived types.

   public class Circle : Shape

   {

      public Circle() { }

 

      // Call base class constructor.

      public Circle(string name) : base(name) { }

 

      public override void Draw()

      {

         Console.WriteLine("Drawing " + PetName + " the Circle");

      }

   }

 

   public class Oval : Circle

   {

      public Oval() { base.PetName = "Joe"; }

 

      // Hide base class impl if they create an Oval.

      new public void Draw()

      {

         Console.WriteLine("Drawing an Oval using a very fancy algorithm");

      }

   }

 

   public class Hexagon : Shape

   {

      public Hexagon() { }

      public Hexagon(string name) : base(name) { }

 

      public override void Draw()

      {

         Console.WriteLine("Drawing " + PetName + " the Hexagon");

      }

   }

   #endregion

 

   public class ShapesApp

   {

      public static int Main(string[] args)

      {

         // The C# base class pointer trick.

         Console.WriteLine("***** Using an array of base class references *****");

         Shape[] s = {new Hexagon(), new Circle(), new Hexagon("Mick"),

                               new Circle("Beth"), new Hexagon("Linda")};

 

         for (int i = 0; i < s.Length; i++)

         {

            s[i].Draw();

         }

 

         // Oval hides the base class impl of Draw()

         // and calls its own version.

         Console.WriteLine("\n***** Calling Oval.Draw() *****");

         Oval o = new Oval();

         o.Draw();

 

         return 0;

 

      }

   }

}

/*

***** Using an array of base class references *****

Drawing NoName the Hexagon

Drawing NoName the Circle

Drawing Mick the Hexagon

Drawing Beth the Circle

Drawing Linda the Hexagon

 

***** Calling Oval.Draw() *****

Drawing an Oval using a very fancy algorithm

*/


Answers (2)