Constructor Program in Java

In Java, a constructor is a piece of code that is used to create an object. A constructor is called implicitly when an object is created in Java using the new keyword. A constructor looks like an instance method. However, a constructor and an instance method are two different things. A Java constructor is often regarded as a special type of method in Java. Constructor program in Java tells about how to use constructors in a program. Constructors always have the same name as the name of the class. Whenever a new object is created in Java, the constructor initializes that object. A class may or may not contain more than one constructor. The following rules must be followed to define a constructor in Java

1) Constructor name and class name should always match.

2) No return type should be given to a Java constructor.

3) Keywords like synchronized, static, native, final, and abstract should not be used with a Java constructor. However, access specifiers like private, protected, public can be used with a constructor.

Constructor Program in Java

The following program demonstrates how to create an array and display its elements on the console.

FileName: ConstructorExample.java

Output:

Explanation: We see that there are two statements in the output but only one print statement in the code. This is because the calling of a constructor is dependent upon the number of times the objects are created. In the code, we have used the keyword new twice. Thus, two times the constructor is called, and two objects of the class ConstructorExample is created. ConstructorExample() written after the new keyword is responsible for the constructor invoking. Note that a constructor always returns the reference of the object created. obj1 and obj2 holds the reference returned by the constructor ConstructorExample().

Types of Constructor in Java

There are three types of constructor in Java

1) Default constructor

2) No argument constructor

3) Parameterized constructor

Default Constructor

Let’s see what happens if we remove the code of constructor in the above example.

FileName: ConstructorExample.java

Explanation:

When we compile and run the above program, it does not show the output because there is no print statement in the program. However, the code is compiled and executed perfectly. Because the Java compiler implicitly inserts a default constructor in the code during the compilation of the program. It is not visible to user. Therefore, when ConstructorExample(), written after the new keyword, the default constructor is called. Hence, there is no error while executing the code.

For example, the default constructor inserted by the Java compiler is:

Note: The Java compiler never inserts the default constructor when a constructor is defined in the code. Thedefault constructors always get the access specifier of the class for which they are defined. In the above code, the class ConstructorExample is public. Hence, the default constructor gets the access specifier public.

No argument Constructor

Consider the following program.

FileName: NoArgConstructor.java

Output:

Explanation: Since, we have provided a no-argument constructor, the default constructor is absent. This no-argument constructor is getting called we create an object of the class NoArgConstructor.

Parameterized Constructor

A constructor with one or more parameters is called a parameterized constructor.

FileName: Employee.java

Output:

Explanation: The parameterized constructor is used to initialize fields of the class. In the code, the constructor has two parameters: one for the employee name and another for the employee id. Therefore, while creating the object of the class, we have to pass the mentioned parameters in the same order; otherwise, the Java compiler punishes with the compilation error. Note that the above code does not contain any zero-parameter constructor. Therefore, a statement like new Employee(); must be avoided. Because the compiler tries to find Employee() in the code, which is absent. Since we have given a parameterized constructor, the existence of the default constructor is also ruled out.

Constructor Chaining Program

When a constructor of a class invokes another constructor of the same class, called constructor chaining. Let’s understand the constructor chaining through the following Java program.

FileName: Employee.java

Output:

Explanation: When the statement new Employee() gets executed, the zero-parameter constructor is called. Inside the zero-parameter constructor, there is a statement this(“Amristesh”);, which does the construction chaining by calling the constructor having one string argument. Thus, the statements that are written after this(“Amritesh”); statement goes in the stack.  Similarly, the single parameter constructor calls the constructor having two parameters. This time also, the statements after this(name, 78901); goes in the stack. The two parameters constructor executes the print statements written inside it. In the end, stack unwinding occurs, and whatever statements that are present in the stack get executed. The last two statements in the output are due to stack unwinding.

Constructor Overloading Program

Constructor overloading means having more than one constructor in a class that has different parameters. Here different parameters mean:

1) Number of parameters of the given constructors is different.

Class ABC has two constructors: one has no parameter, while another has one parameter.

2) Number of parameters is the same, but the order/ type of parameters is different.

Class ABC has two constructors. Each constructor accepts two parameters. In the first constructor, the first parameter is of type int, and the second parameter is of type string, whereas in the second constructor, the first parameter is of type string, whereas the second parameter is of type int. These two constructors can be assigned different responsibilities as per the requirement.

Copy Constructor Program in Java

A copy constructor is used to copying the values of one object to another object of the same class. Like C++, there is no copy constructor in Java. We have to create the copy constructor explicitly. The following program illustrates the same.

FileName: CopyConst.java

Output:

Explanation: The one-parameter constructor is doing the job of the copy constructor in the code. The rest of the code is very straightforward to comprehend.

Pin It on Pinterest

Share This