javascript
Brief description  about Online courses   join in Online courses
OR

Constructor Concept in Java

Java  Teacher
Java Teacher
Working

A Constructor is a special method that is used to initialize a newly created object and is  called just after the memory is allocated for the object.

It can be used to initialize the objects ,to required ,or default valuesat the time of object creationIt is not mandatory for the coder to write a constructor for the class.


If no user defined constructor is provided for a class, compiler initializes member variables to its default values.

 

  • numeric data types are set to 0
  • char data types are set to null character(‘’)
  • reference variables are set to null


In order to create a Constructor observe the following rules

  1. It has the same name as the class
  2. It should  not return a value not even void



Assignment 1: Create your First Constructor

 
Step 1: Type following code in your editor

 
  class Demo

{      

int  value1;      

int  value2;      

Demo()

{          

value1 = 10;          

value2 = 20;          

System.out.println("Inside Constructor");      

}      

public void display()

{        

System.out.println("Value1 === "+value1);         System.out.println("Value2 === "+value2);    

}    

public static void main(String args[])

{        

Demo d1 = new Demo();      

d1.display();  

  }

 

Step 2) Save , Run & Compile the code. Observe the output.


Constructor overloading


Constructor overloading is a technique in Java in which a class can have any number of constructors that differ in parameter lists.The compiler differentiates these constructors by taking into account the number of parameters in the list and their type.

 

Examples of valid  constructors for class Account are

Account(int a); 

 Account (int a,int b); 

 Account (String a,int b);


Assignment 2:To understand Constructor Overloading

 
Step 1) Type the code in editor

 class Demo

   {     

int  value1;     

int  value2;     

/*Demo()

{       

value1 = 10;       

value2 = 20;       

System.out.println("Inside 1st Constructor");     

}

*/  Demo(int a)

{     

value1 = a;     

System.out.println("Inside 2nd Constructor");   

}   

    Demo(int a,int b)

   {   

value1 = a;   

value2 = b;   

System.out.println("Inside 3rd Constructor");   

   }   

   public void display()

{     

System.out.println("Value1 === "+value1);      System.out.println("Value2 === "+value2); 

public static void main(String args[])

{   

Demo d1 = new Demo();   

Demo d2 = new Demo(30);   

Demo d3 = new Demo(30,40);   

d1.display();   

d2.display();   

d3.display(); 

}

  }


Step 2)  Save , Compile & Run the Code.

 
Step 3) Error = ?. Try and debug the error before proceeding to next step.

 
Step 4) Every class has a default Constructor.


Default Constructor for class Demo is Demo(). 

In case you do not provide this constructor the compiler creates it for you and initializes  the variables to default values.

 You may choose to override this default constructor and initialize variables to your desired values as shown in Assignment 1.

 


But if you specify  a parametrized constructor like Demo(int a) ,and want to use the default constructor Demo(), it is mandatory for you to specify it.

In other words, in case your Constructor is overridden , and you want to use the default  constructor , its need to be specified.

Step 4)  Uncomment line # 4-8. Save , Compile & Run the code.


Constructor Chaining

Consider a  scenario where a base class is extended by a child. Whenever an object of the child class is created ,the constructor of the parent class is invoked first. This is called Constructor chaining.


Assignment 3: To understand constructor chaining

Step1 ) Copy the following code in the editor



 class Demo

   {   

int  value1;   

int  value2;   

    Demo()

      {     

value1 = 1;     

value2 = 2;     

System.out.println("Inside 1st Parent Constructor");   

     }   

   Demo(int a)

    {     

value1 = a;     

System.out.println("Inside 2nd Parent Constructor");   

    } 

  public void display()

    {     

 System.out.println("Value1 === "+value1);     System.out.println("Value2 === "+value2); 

    } 

  public static void main(String args[])

   {   

 DemoChild d1 = new DemoChild();   

 d1.display(); 

   }

 }

 class DemoChild extends Demo

   {   

int value3;   

int value4;   

    DemoChild()

      {   

//super(5);     

value3 = 3;     

value4 = 4;   

System.out.println("Inside the Constructor of Child");   

     }   

 public void display()

   {     

System.out.println("Value1 === "+value1);      System.out.println("Value2 === "+value2);      System.out.println("Value1 === "+value3);      System.out.println("Value2 === "+value4);   

   }

}

Step 2) Run the Code.

 
Owing to constructor chaining , when object of child class DemoChild is created , constructor Demo() of the parent class is invoked first and later constructor.

 DemoChild() of the child is created.


Expected Output  =


       Inside 1st Parent Constructor

Inside the Constructor of Child

Value1 === 1

Value2 === 2

Value1 === 3

Value2 === 4



Step3 ) You may observe the constructor of the parent class Demo is overridden .What is you want to call the overridden constructor Demo(int a) instead of the default constructor Demo() when your child object is created ???


In such cases you can use the keyword “super” to call overridden constructors of the parent class.

 

Syntax:-  super()

--or-- 

super(parameter list);

Ex: If your constructor is like Demo(String Name,int a)


you will specify super(“Java”,5)


If used ,the keyword super needs to be the first line of code in  the constructor of the child class.


Step 4) Uncomment Line # 26 and run the code. Observe the Output.





 

Write your comment now