Java Constructors

 

In Java, constructors are special methods used to initialize objects. While class attributes define the state, constructors ensure that every new object starts with a proper setup.

If you’ve worked with the new keyword in Java, you’ve already used constructors, even if you didn’t realize it.

In this guide, we’ll cover:

  • What constructors are
  • Rules for constructors
  • Types of constructors
  • Constructor chaining
  • Examples with code

What Is a Constructor?

 
  • A constructor is a special method that is called when an object is created.
  • It has the same name as the class.
  • It has no return type (not even void).
  • Can be overloaded (multiple constructors with different parameters).

Syntax:

class ClassName {
  // Constructor
  ClassName(parameters) {
    // initialization code
  }
}

Rules for Constructors

 
  1. Constructor name must match the class name.
  2.  Constructors cannot have a return type.
  3. If no constructor is defined, Java provides a default constructor.
  4. Constructors can be overloaded.
  5. You can call another constructor using this(…).

Types of Constructors

 

1. Default Constructor

 
  • If you don’t define any constructor, Java automatically provides one.
  • It initializes instance variables to their default values.

Example:

public class DefaultConstructorExample {
  private String name;

  // No constructor defined → compiler provides default constructor

  public void display() {
    System.out.println(“Name: ” + name); // default null
  }

  public static void main(String[] args) {
    DefaultConstructorExample obj = new DefaultConstructorExample();
obj.display();
  }
}

2. No-Argument Constructor

 
  • Explicitly defined with no parameters.
  • Often used to assign default values.

Example:

public class NoArgConstructorExample {
  private String name;

  // no-arg constructor
  public NoArgConstructorExample() {
    name = “Unknown”;
  }

  public void display() {
    System.out.println(“Name: ” + name);
  }

  public static void main(String[] args) {
    NoArgConstructorExample obj = new NoArgConstructorExample();
  obj.display(); // Name: Unknown
  }
}

3. Parameterized Constructor

 
  • Takes parameters to initialize objects with specific values.

Example:

public class ParameterizedConstructorExample {
  private String name;
  private int age;

  // parameterized constructor
  public ParameterizedConstructorExample(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public void display() {
    System.out.println(“Name: ” + name + “, Age: ” + age);
  }

  public static void main(String[] args) {
    ParameterizedConstructorExample p1 = new ParameterizedConstructorExample(“Alice”, 25);
    ParameterizedConstructorExample p2 = new ParameterizedConstructorExample(“Bob”, 30);

    p1.display();
    p2.display();
  }
}

4. Constructor Chaining

 
  • Calling one constructor from another using this(…).
  • Helps reduce duplicate code.

Example:

public class ConstructorChainingExample {
  private String name;
  private int age;

  // no-arg constructor
  public ConstructorChainingExample() {
    this(“Unknown”, 0); // calls parameterized constructor
  }

  // parameterized constructor
  public ConstructorChainingExample(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public void display() {
    System.out.println(“Name: ” + name + “, Age: ” + age);
  }

  public static void main(String[] args) {
    ConstructorChainingExample c1 = new ConstructorChainingExample();
    ConstructorChainingExample c2 = new ConstructorChainingExample(“Alice”, 25);

    c1.display(); // Name: Unknown, Age: 0
    c2.display(); // Name: Alice, Age: 25
  }
}

Best Practices

 
  • Always initialize attributes in constructors.
  • Use constructor chaining to avoid code duplication.
  • Keep constructors short and focused.
  • Prefer parameterized constructors for flexibility.
  • Use no-arg constructors for frameworks (like Hibernate, Spring).

Conclusion

 

Constructors are fundamental in Java for initializing objects. By using default, no-arg, parameterized constructors, and constructor chaining, you can create flexible and maintainable classes.

  • Use no-arg constructors for defaults.
  • Use parameterized constructors for flexibility.
  • Use constructor chaining to reduce redundancy.

Mastering constructors will make your Java code more robust and object-oriented.

Scroll to Top