Constructor Overriding Example in Java

Like methods, constructors can also be overloaded. In this guide we will see Constructor overloading with the help of examples. Before we proceed further let's understand what is constructor overloading and why we do it.

Constructor overloading is a concept of having more than one constructor with different parameters list, in such a way so that each constructor performs a different task. For e.g. Vector class has 4 types of constructors. If you do not want to specify the initial capacity and capacity increment then you can simply use default constructor of Vector class like this Vector v = new Vector(); however if you need to specify the capacity and increment then you call the parameterized constructor of Vector class with two int arguments like this: Vector v= new Vector(10, 5);

constructor overloading
You must have understood the purpose of constructor overloading. Lets see how to overload a constructor with the help of following java program.

Constructor Overloading Example

Here we are creating two objects of class StudentData. One is with default constructor and another one using parameterized constructor. Both the constructors have different initialization code, similarly you can create any number of constructors with different-2 initialization codes for different-2 purposes.
StudentData.java

class StudentData {    private int stuID;    private String stuName;    private int stuAge;    StudentData()    {        //Default constructor        stuID = 100;        stuName = "New Student";        stuAge = 18;    }    StudentData(int num1, String str, int num2)    {        //Parameterized constructor        stuID = num1;        stuName = str;        stuAge = num2;    }    //Getter and setter methods    public int getStuID() {        return stuID;    }    public void setStuID(int stuID) {        this.stuID = stuID;    }    public String getStuName() {        return stuName;    }    public void setStuName(String stuName) {        this.stuName = stuName;    }    public int getStuAge() {        return stuAge;    }    public void setStuAge(int stuAge) {        this.stuAge = stuAge;    }     public static void main(String args[])    {        //This object creation would call the default constructor        StudentData myobj = new StudentData();        System.out.println("Student Name is: "+myobj.getStuName());        System.out.println("Student Age is: "+myobj.getStuAge());        System.out.println("Student ID is: "+myobj.getStuID());         /*This object creation would call the parameterized         * constructor StudentData(int, String, int)*/        StudentData myobj2 = new StudentData(555, "Chaitanya", 25);        System.out.println("Student Name is: "+myobj2.getStuName());        System.out.println("Student Age is: "+myobj2.getStuAge());        System.out.println("Student ID is: "+myobj2.getStuID());    } }

Output:

Student Name is: New Student Student Age is: 18 Student ID is: 100 Student Name is: Chaitanya Student Age is: 25 Student ID is: 555

Let's understand the role of this () in constructor overloading

public class OverloadingExample2 {    private int rollNum;    OverloadingExample2()    {       rollNum =100;    }    OverloadingExample2(int rnum)    {       this();       /*this() is used for calling the default          * constructor from parameterized constructor.        * It should always be the first statement         * inside constructor body.        */       rollNum = rollNum+ rnum;    }    public int getRollNum() { 	  return rollNum;    }    public void setRollNum(int rollNum) { 	  this.rollNum = rollNum;    }    public static void main(String args[])    { 	   OverloadingExample2 obj = new OverloadingExample2(12);        System.out.println(obj.getRollNum());     } }          

Output:

112

As you can see in the above program that we called the parameterized constructor during object creation. Since we have this() placed in parameterized constructor, the default constructor got invoked from it and initialized the variable rollNum.

Test your skills – Guess the output of the following program

public class OverloadingExample2 {    private int rollNum;    OverloadingExample2()    {       rollNum =100;    }    OverloadingExample2(int rnum)    {             rollNum = rollNum+ rnum;       this();    }    public int getRollNum() {       return rollNum;    }    public void setRollNum(int rollNum) {       this.rollNum = rollNum;    }    public static void main(String args[])    {        OverloadingExample2 obj = new OverloadingExample2(12);        System.out.println(obj.getRollNum());     } }          

Output:

Exception in thread "main" java.lang.Error: Unresolved compilation  problem:Constructor call must be the first statement in a constructor

Program gave a compilation error. Reason: this() should be the first statement inside a constructor.

Another Constructor overloading Example

Another important point to note while overloading a constructor is: When we don't implement any constructor, the java compiler inserts the default constructor into our code during compilation, however if we implement any constructor then compiler doesn't do it. See the example below.

public class Demo {    private int rollNum;    //We are not defining a no-arg constructor here     Demo(int rnum)    {       rollNum = rollNum+ rnum;    }    //Getter and Setter methods     public static void main(String args[])    {       //This statement would invoke no-arg constructor       Demo obj = new Demo();    } }

Output:

Exception in thread "main" java.lang.Error: Unresolved compilation  problem:The constructor Demo() is undefined

eastwoodofflus98.blogspot.com

Source: https://beginnersbook.com/2013/05/constructor-overloading/

0 Response to "Constructor Overriding Example in Java"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel