×

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

Pyramid Program in Java

Pyramid Program in Java In the previous section, we have discussed about the number pattern programs in Java. The logic for the number pattern and pyramid pattern is the same except...

2 minutes read.

Java md5 Hash Example

A 128-bit hash value is generated by the Message Digest Algorithm 5, which is a cryptographic algorithm. A stationary hash value is generated by the hash function from data of...

3 minutes read.

Java String hashCode() method

Java String hashCode() method returns hash code for current String. hash code for string object is computed as s[0]*31^(n - 1) + s[1]*31^(n - 2) + ... + s[n - 1] Using int...

2 minutes read.

Java Math sinh() Method

The sinh() method of Java Math class returns the hyperbolic sine of the specified double value. Syntax: public static double sinh(double x) Parameters: The parameter ‘a’ represents the number whose hyperbolic sine is to...

2 minutes read.

StringBuilder in Java

StringBuilder in Java Java StringBuilder class is introduced since JDK 1.5. The StringBuilder class is mainly used to create modifiable or mutable strings. Note that the StringBuilder class is not synchronized....

7 minutes read.

Java String valueOf() method

Java String valueOf() method converts different types of values into String. Such as : int to String, long to String, boolean to String, character to String, float to String, double to...

2 minutes read.

Java Xmx

This section will explain what Xmx in Java is and how to establish a Java application's maximum heap size. When we execute a Java application, it occasionally displays an error message...

3 minutes read.

Class definition in Java

The class definition in Java Java is an object-oriented programming language. We essentially know that programming languages based on object-oriented paradigms have classes and objects in their concepts as main, which...

6 minutes read.

Java Enum Keyword

Definition: A data type in Java called Enum has a respect to supply of constants. The weekdays (SUN, MON, TUE, WED, THU, FRI, and SAT), directions (NORTH, SOUTH, EAST, and WEST),...

4 minutes read.

Java Int Keyword

Among the primitive data types is the Java int keyword. To declare variables, use this. It can also be used with methods that return values of the integer type. It...

3 minutes read.

Grepcode Java util date

What is java.util.Date Class? The date and time in Java are provided through the java.util.Date class. If you imported java.util, it could be helpful. Use the Java.util.Date class to implement this class...

4 minutes read.

Java Heap Space Out of Memory Error

This error is called an "out of memory" error, which indicates that the JVM cannot allocate an object in memory from the heap. Hence the java.lang.out of memory error, describing...

2 minutes read.

How to remove last character from String in Java

In java, there are predominantly three classes connected with the string. The classes are String, StringBuilder, and StringBuffer class that gives techniques connected with string control. Eliminating the first and...

5 minutes read.

Deadlock Prevention and avoidance in Java

This tutorial will discuss deadlock prevention and Avoidance in Java programming language. Introduction Multithreading in Java includes deadlock. We can multitask by running several threads concurrently in the multithreading environment. Deadlock occurs...

4 minutes read.

MOOD Factors to Assess a Java Program

In this tutorial, we will comprehendthe meaning of mood factors in Java. For the development of any software system,the quality of anapplication is important. It is more important to maintain large-scale...

4 minutes read.

Maximizing Profit in Stock Buy Sell in Java

In this tutorial, we will deal with a popular problem, a favourite of interviewers. The problem is named as Maximising profit in stock Buy Sell. we will see certain approaches...

6 minutes read.

Getting Synchronized Set from Java HashSet

The synchronizedSet() technique for java.util.Collections class is utilized to return a synchronized (string safe) set supported by the predetermined set. To ensure sequential access, it is important that everything admittance...

4 minutes read.

Hogben Numbers in Java

In this section, we will discover what the Hogben number is and develop Java programs that compute it. Java coding interviews and academic exams typically involve questions about the Hogben...

3 minutes read.

Java Math.multiplyExact() method

In java, we are provided with multiplyExact method in the Math module. This Math module belongs to the java.lang package. In general, this method returns the product of the provided...

2 minutes read.

Java Integer valueOf() method

The valueOf() method of Java Integer class returns an Integer object holding the specified int value. The second method returns an Integer object holding the specified String value. The third syntax returns...

2 minutes read.