×

Constructor Program in Java

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

 public class ConstructorExample
{
// Constructor
ConstructorExample()
{
    // print statement
    System.out.println("Inside the constructor of the class ConstructorExample. ");
}
public static void main(String argvs[])
{
    // creating two objects obj of the class ConstructorExample
    ConstructorExample obj1 = new ConstructorExample();
    ConstructorExample obj2 = new ConstructorExample();
}
} 

Output:

 Inside the constructor of the class ConstructorExample.
Inside the constructor of the class ConstructorExample. 

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

 public class ConstructorExample
{
public static void main(String argvs[])
{
    // creating two objects obj of the class ConstructorExample
    ConstructorExample obj1 = new ConstructorExample();
    ConstructorExample obj2 = new ConstructorExample();
}
} 

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:

 ConstructorExample()
{
} 

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

 public class NoArgConstructor
{
// no argument constructor
NoArgConstructor()
{
System.out.println("Inside the no argument constructor. ");
}
public static void main(String argvs[])
{
    // creating an object of the class NoArgConstructor
    // and invoking the no argument constructor
    NoArgConstructor obj1 = new NoArgConstructor();
}
} 

Output:

Inside the no argument constructor.

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

 public class Employee
{
String empName; // contains employee name
int empId; // stores employee id
// a parameterized constructor with two parameters
Employee(String name, int id)
{
    // initializing the fields
    empName = name;
    empId = id;
}
// A method printing the information of an employee
void printInfo()
{
    System.out.println("Employee name is: " + empName + ", and his id is: " + empId);
}
public static void main(String argvs[])
{  
    // creating two objects of the class Employee
    // invoking paramterized constructor to initialize the  fields
    Employee e1 = new Employee("Amit", 12345);
    Employee e2 = new Employee("Sumit", 26789);
    // printing the information of employee e1
    e1.printInfo();
    // printing the information of employee e2
    e2.printInfo();
}
} 

Output:

 Employee name is: Amit, and his id is: 12345
Employee name is: Sumit, and his id is: 26789 

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

 public class Employee
{
// zero-parameter constructor
Employee()
{  
    // calling the paramterized consturctor that takes
    // one parameter
    this("Amritesh");
    System.out.println("Inside the zero-parameter constructor.");
}
// parameterized constructor that takes one argument
Employee(String name)
{
    // calling another constructor that takes
    // two parameters
    this(name, 78901);
    System.out.println("Inside the one-parameter constructor.");
}
// parameterized constructor that takes two parameters
Employee(String name, int id)
{
    // displaying the employee information
    System.out.print("The name of the employee is ");
    System.out.println(name + ", and his id is " + id);
    System.out.println("Inside the two-parameters constructor.");
}
public static void main(String argvs[])
{
    // creating an object of the class Employee and
    // calling no argument constructor
    Employee e1 = new Employee();
}
} 

Output:

 The name of the employee is Amritesh, and his id is 78901
Inside the two-parameters constructor.
Inside the one-parameter constructor.
Inside the zero-parameter constructor. 

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.

 public class ABC
{
               ABC()
               {
                 …
                 …
               }
               ABC(int i)
               {
                 …
                 …
               }
} 

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.

 public class ABC
{
               ABC(int i, String str)
               {
                 …
                 …
               }
               ABC(String str, int i)
               {
                 …
                 …
               }
} 

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

 public class CopyConst
{
// class fields   
int ab;
String str;
// parameterless constructor
CopyConst()
{
    ab = 9;
    str = "ABC";
}
// It is a copy constructor that copies the values of one object
// to that object, which calls this copy constructor.
// This constructor takes the class object as the argument, whose values
// is going to be copied
CopyConst(CopyConst ob)
{
    // copying the values of the object
    ab = ob.ab;
    str = ob.str;
}
// printing values of different fields of the objects of the class
void printInfo()
{
    System.out.print(" Value of the integer field is " + ab + " ");
    System.out.println("Value of the string field is " + str);   
}
// driver method
public static void main(String argvs[])
{
    // creating an object, and calling the parameterless constructor
    CopyConst obj1 = new CopyConst();
    // creating another object, and calling the copy constructor
    CopyConst obj2 = new CopyConst(obj1);
    // displaying fields of the given object
    obj1.printInfo();
    obj2.printInfo();
}
} 

Output:

 Value of the integer field is 9 Value of the string field is ABC
Value of the integer field is 9 Value of the string field is ABC 

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.


Related Topics

Reverse a String in Java

Reversing a string means that if we have a string called “what is your name”, the reversed format is “eman ruoy si tahw”. Reversing a string involves totally flipping the...

3 minutes read.

Java Thread Creation

Java provides the two ways to create a Thread: Implementing the Runnable interface.Extending the Thread class. Implementing Runnable interface The easiest way of creating a thread is to make a class that implements...

5 minutes read.

Timestamp Operation in Java

JDBC escape syntax is supported by Timestamp's formatting and parsing functions. Additionally, it adds support for fractional seconds values for SQL TIMESTAMP.java.util.Date is wrapped in a lightweight wrapper that enables...

3 minutes read.

Creating API Document Javadoc tool

The JavaDoc utility is a document generator tool written in Java that generates standard documentation in HTML format. It parses declarations and documentation in a source file collection that describes...

3 minutes read.

Dutch National Flag Problem in Java

Dutch National Flag (DNF) is a programming issue that Edsger Dijkstra put up. The white, red, and blue hues make up the Dutch flag. The goal is to haphazardly set...

6 minutes read.

Java String indexOf() method

Java String indexOf() method returns index of a given character or substring present in a String. Methods Description int indexOf(int ch)     It returns index position for the given char value.int indexOf(int ch,...

2 minutes read.

Java Write File

In this post, we'll examine various Java programming methods for writing into files. Since this class is character-oriented due to how it is used in file handling in Java, it...

4 minutes read.

How to download Eclipse for Java

Introduction: We write a java program, and when we want to run it, we need software to run it. Eclipse is a kind of software used to execute a JavaFX...

3 minutes read.

Java String Matches vs Contains

String Matches in Java The matches() function and its variations are used to determine whether or not a provided text matches a regular expression. The functioning as well as output of...

3 minutes read.

Java Code Optimization

We encounter the idea of optimization while working on any Java application. It is essential that the code we write is not only clear and error-free but also optimized, meaning...

9 minutes read.

Find Unique Elements in Array Java

An array in Java is a grouping of objects that share the same type of data. We are free to enter identical or repeating elements into an array. Therefore, we...

6 minutes read.

How to find the length of an Array in Java

Arrays: An array is a sort of container object that stores constant quantities of values of a single type in one memory area. A finite number of items must all be...

3 minutes read.

Missing Number in an Arithmetic Progression in Java

Given an array that shows the elements of an orderly arithmetic progression. Find the missing number to complete the succession of elements. Example:  Input: a [ ] = {2 , 4 , 6...

3 minutes read.

Java InetAddress class

InetAddress class The InetAddress class refers to the IP address, both IPv4 and IPv6.An instance of an InetAddress consists of an IP address and possibly its corresponding hostname. It provides a method to get the...

9 minutes read.

Java LinkedHashSet

LinkedHashSet in Java with Example Java LinkedHashSet extends HashSet and Implements the Set interface. It doesn’t contain only duplicate values like HashSet. It also permits the null elements. It maintains the order...

5 minutes read.

Difference between print() and println() in Java

In this tutorial, we will discuss the differences between print and println in Java language. There are mainly two methods to display the text on the console printprintln The above two methods are...

4 minutes read.

Java Location

PATH is an environmental variable that the system software now uses to find executable files (.exe) or Java binaries ( java or javac command). Once chosen, a route cannot be...

3 minutes read.

Block Swap Algorithm for array rotation in Java

An array and r, the rotation factor by which the array must be rotated, are both provided to us. We must then return the rotated array. A well-known and popular method is...

4 minutes read.

Java program to print matrix in Z form

In this article, you will be acknowledged about what is a matrix along with an example. Also, most importantly, you will learn how to print matrix in Z form. What is...

5 minutes read.

Deque in Java

Deque in java collections with Example Deque is short for “double-ended queue.” It is a linear collection that extends the Queue interface and supports insertion and deletion of the element at both the...

3 minutes read.