Constructors

Constructors in Java are special methods within a class that are used to initialize objects of that class. They have the same name as the class and do not have a return type, not even void. Constructors are automatically invoked when an object is created using the new keyword.

Key Points about Constructors

Name and Signature: Constructors have the same name as the class. They can be parameterized or non-parameterized, depending on whether they accept arguments.

public class MyClass {
    // Non-parameterized constructor
    public MyClass() {
        // Constructor logic
    }
    // Parameterized constructor
    public MyClass(int parameter1, String parameter2) {
        // Constructor logic with parameters
    }
}Code language: Java (java)

Initialization: Constructors are responsible for initializing the instance variables of an object. This ensures that the object is in a valid and usable state upon creation.

Implicit and Explicit Invocation: Constructors are implicitly invoked when an object is created.

MyClass obj = new MyClass();  // Implicitly invokes the non-parameterized constructorCode language: JavaScript (javascript)

Constructors can also be explicitly invoked if there are multiple constructors in a class, and the developer wants to choose a specific one.

MyClass obj = new MyClass(42, "Hello");  // Explicitly invokes the parameterized constructorCode language: JavaScript (javascript)

Chaining Constructors Overloading: Constructors can call other constructors in the same class using this(). This allows for constructor overloading, providing flexibility in object initialization.

public class MyClass {
    public MyClass() {
        // Non-parameterized constructor logic
    }
    public MyClass(int parameter) {
        this();  // Calls the non-parameterized constructor
        // Parameterized constructor logic
    }
}Code language: PHP (php)

Constructor Types

In Java, there are two main types of constructors: Default Constructors and Parameterized Constructors. Let’s explore each type:

Default Constructor

A default constructor is a constructor that is automatically provided by Java if no constructor is explicitly defined in a class. It does not take any parameters. The default constructor initializes the instance variables with default values (e.g., 0 for numeric types, null for objects, etc.).

Syntax:

public class MyClass {
    // Default constructor
    public MyClass() {
        // Constructor logic (default initialization)
    }
}Code language: PHP (php)

Here’s an example that demonstrates default constructor:

class Book {
    // Fields
    private String title;
    private String author;
    // Default constructor
    public Book() {
        // Default values
        this.title = "Java Programming";
        this.author = "E.BalaGuru Swamy";
    }
    // Method to display information about the book
    public void displayInfo() {
        System.out.println("Title: " + title);
        System.out.println("Author: " + author);
    }
}	
class DefaultDemo{
    public static void main(String[] args) {
        // Creating objects using the constructors
        Book defaultBook = new Book(); // Default constructor
        // Displaying information using object methods
        System.out.println("Default Book:");
        defaultBook.displayInfo();
    }
}

Output:

D:>java DefaultConstructorDemo
Default Book:
Title: Java Programming
Author: E.BalaGuru SwamyCode language: CSS (css)
Parameterized Constructor

A parameterized constructor is a constructor that accepts parameters during object creation. It allows you to initialize the instance variables with values provided at the time of object instantiation.

Syntax:

public class MyClass {
    // Parameterized constructor
    public MyClass(DataType parameter1, DataType parameter2, ...) {
        // Constructor logic (initialization using parameters)
    }
}Code language: PHP (php)
Copy Constructor

A copy constructor is a type of constructor that takes an object of the same class as a parameter and creates a new object with the same values. It is not provided by default, and you need to define it explicitly.

Syntax

public class MyClass {
    // Fields
    private DataType field1;
    private DataType field2;
    // Copy constructor
    public MyClass(MyClass otherObject) {
        this.field1 = otherObject.field1;
        this.field2 = otherObject.field2;
    }
      // Other methods and constructors...
}Code language: PHP (php)

Here’s an example that demonstrates parameterized and copy constructors:

class Person {
    // Fields
    private String name;
    private int age;

    // Parameterized constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // Copy constructor
    public Person(Person otherPerson) {
        this.name = otherPerson.name;
        this.age = otherPerson.age;
    }
    // Method to display information about the person
    public void displayInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age + " years");
    }
}
class ParamCopy{
    public static void main(String[] args) {
        // Creating an object using the parameterized constructor
        Person originalPerson = new Person("Mahesh", 21);
        // Creating a new object using the copy constructor
        Person copiedPerson = new Person(originalPerson);
        // Displaying information using object methods
        System.out.println("Original Person:");
        originalPerson.displayInfo();
        System.out.println("\nCopied Person:");
        copiedPerson.displayInfo();
    }
}

Output:

D:>java ParameterCopyDemo
Original Person:
Name: Mahesh
Age: 21 years

Copied Person:
Name: Mahesh
Age: 21 years
Scroll to Top