Back to Java
2026-02-205 min read

Object Constructors

Learn Object Constructors step by step with clear examples and exercises.

Title: Object Constructors in Java - A full guide

Why This Matters

In Java, an object constructor is a special method that is used to create and initialize objects. It's crucial for developers to understand how constructors work because they help in creating customized instances of classes with specific initial values. Knowing how to use constructors effectively can help you write cleaner, more efficient code, especially when dealing with complex objects or handling multiple states in an object-oriented environment.

Prerequisites

Before diving into the details of object constructors, it's essential to have a good understanding of the following concepts:

  1. Java basics: variables, data types, operators, control structures, and loops
  2. Classes and objects in Java
  3. Methods and function overloading
  4. Access modifiers (public, private, protected, default)
  5. Static members and methods

Core Concept

Defining a Constructor

A constructor is a special method that has the same name as the class it belongs to. It is called when an object of a particular class is created using the new keyword. The constructor initializes the instance variables of the class and sets them to default values if no arguments are passed during object creation.

public class MyClass {
private int myVariable;

// Constructor with no parameters
public MyClass() {
myVariable = 0;
}
}

In the example above, we have a simple class called MyClass with one private instance variable myVariable. We also have a constructor that sets the initial value of myVariable to 0 when an object of MyClass is created.

Constructors and Parameters

Constructors can take parameters as well, allowing you to customize the initialization of objects based on your needs. When creating a constructor with parameters, it's essential to match the number and data types of the parameters in the constructor declaration and invocation during object creation.

public class MyClass {
private int myVariable;

// Constructor with one parameter
public MyClass(int initialValue) {
myVariable = initialValue;
}
}

In this example, we have a constructor that takes an integer parameter initialValue. When creating an object of MyClass, you can specify the value for initialValue.

MyClass obj = new MyClass(10); // initializes myVariable with 10

Default and Parameterized Constructors

A class can have both a default constructor (no parameters) and parameterized constructors. If you don't explicitly define a constructor, Java will automatically generate a default constructor for you. However, if you define any parameterized constructors, the default constructor will not be generated unless explicitly defined.

public class MyClass {
private int myVariable;

// Constructor with one parameter
public MyClass(int initialValue) {
myVariable = initialValue;
}

// Default constructor (optional)
public MyClass() {
this(0); // calls the parameterized constructor with a default value of 0
}
}

In the example above, we have both a default constructor and a parameterized constructor. The default constructor calls the parameterized constructor with a default value of 0 for initialValue.

Worked Example

Let's create a simple class called Rectangle that has constructors to initialize the rectangle with different sets of parameters: width, height, x-coordinate, and y-coordinate.

public class Rectangle {
private int width;
private int height;
private int x;
private int y;

// Constructor with no parameters (default values)
public Rectangle() {
this(1, 1, 0, 0);
}

// Constructor with width and height only
public Rectangle(int width, int height) {
this(width, height, 0, 0);
}

// Constructor with x, y, width, and height
public Rectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
}

In the example above, we have three constructors for the Rectangle class: a default constructor that initializes the rectangle with default values (1, 1, 0, 0), a constructor that takes only width and height parameters, and a constructor that takes x, y, width, and height parameters.

// Creating rectangles using different constructors
Rectangle r1 = new Rectangle(); // default constructor (1x1 rectangle at (0, 0))
Rectangle r2 = new Rectangle(5, 3); // constructor with width and height (5x3 rectangle at (0, 0))
Rectangle r3 = new Rectangle(2, 4, -1, 3); // constructor with x, y, width, and height (-1, 3 rectangle of size 2x4)

In the example above, we create three different rectangles using each constructor.

Common Mistakes

1. Not understanding the difference between methods and constructors

Constructors are special methods that are called when an object is created, while regular methods can be called on existing objects. Constructors do not have a return type (not even void), while regular methods do.

2. Forgetting to call super() in the constructor of a subclass

When you create a subclass constructor, it's essential to call the superclass constructor using the super() keyword before accessing any instance variables or calling other methods. Failing to do so can lead to runtime errors.

3. Not understanding the difference between default and parameterized constructors

If you define any parameterized constructors, Java will not generate a default constructor unless explicitly defined. Be aware of this when working with classes that require custom initialization.

Practice Questions

  1. Write a class called Circle with constructors to initialize the circle's radius and center (x-coordinate and y-coordinate). Include a method to calculate the area of the circle.
  2. Create a class called Student with a constructor that takes parameters for name, age, and enrollment number. Overload the constructor to allow setting only the name and enrollment number if the age is not provided. Add methods to get and set the student's name, age, and enrollment number.
  3. Write a class called Shape with an abstract method calculateArea(). Create two subclasses: Circle and Rectangle, both extending the Shape class. Implement the calculateArea() method in each subclass.

FAQ

Q1: Can I return a value from a constructor?

A1: No, constructors do not have a return type (not even void). They are used to initialize objects and cannot be used to return values.

Q2: What happens if I don't define any constructors for my class?

A2: If you don't explicitly define any constructors for your class, Java will automatically generate a default constructor that initializes all instance variables with their default values (0 for numeric types, false for boolean, and null for objects).

Q3: Can I overload constructors in Java?

A3: Yes, you can overload constructors in Java by defining multiple constructors with different parameter lists within the same class. Each constructor should have a unique combination of parameters to avoid ambiguity during object creation.

Object Constructors | Java | XQA Learn