Constructor Overloading in Java | Java for Beginner | Java language | Overloading Concept.

Constructor Overloading 

In addition to overloading normal methods, you can also overload constructor methods. In
fact, for most real-world classes that you create, overloaded constructors will be the norm,
not the exception.

To understand why, let’s see through example.


class Box
{
   double width;
   double height;
   double depth;
   // This is the constructor for Box.
   Box(double w, double h, double d)
   {
      width = w;
      height = h;
      depth = d;
   }
   // compute and return volume
   double volume()
   {
      return width * height * depth;
   }
}



Here, Box( ) constructor requires three parameters. This means that all declarations of Box objects must pass three arguments to the Box( ) constructor. For example, the following statement is currently invalid:

Box ob = new Box();


Since Box( ) requires three arguments, it’s an error to call it without them. Simply overload the Box constructor so that it handles the situations just described. Here is a program that contains an improved version of Box that does just that:


class Box
{
   double width;
   double height;
   double depth;
   // constructor used when all dimensions specified
   Box(double w, double h, double d)
   {
      width = w;
      height = h;
      depth = d;
   }
   // constructor used when no dimensions specified
   Box()
   {
      width = -1; // use -1 to indicate
      height = -1; // an uninitialized
      depth = -1; // box
   }
   // constructor used when cube is created
   Box(double len)
   {
      width = height = depth = len;
   }
   // compute and return volume
   double volume()
   {
      return width * height * depth;
   }
}
class OverloadCons
{
   public static void main(String args[])
   {
      // create boxes using the various constructors
      Box mybox1 = new Box(10, 20, 15);
      Box mybox2 = new Box();
      Box mycube = new Box(7);
      double vol;
      // get volume of first box
      vol = mybox1.volume();

      System.out.println("Volume of mybox1 is " + vol);
      // get volume of second box
      vol = mybox2.volume();
      System.out.println("Volume of mybox2 is " + vol);
      // get volume of cube
      vol = mycube.volume();
      System.out.println("Volume of mycube is " + vol);
   }
}


The output:

Volume of mybox1 is 3000.0
Volume of mybox2 is -1.0
Volume of mycube is 343.0

Post a Comment

1 Comments