What is Default Constructor in Java: Simple Explanation and Example
default constructor is a no-argument constructor automatically provided by the compiler if no constructors are explicitly defined in a class. It initializes the object with default values and allows creating instances without passing any parameters.How It Works
Think of a constructor as a recipe to create an object. When you don't write any recipe yourself, Java gives you a simple one automatically — this is the default constructor. It has no ingredients (parameters) and just sets up the object with basic default values like zero for numbers or null for objects.
This automatic constructor helps you create objects quickly without extra setup. But if you write your own constructor with parameters, Java assumes you want to control the setup and won't create the default one for you.
Example
This example shows a class without any constructor. Java adds a default constructor behind the scenes, so you can create an object without arguments.
public class Car { String model; int year; public void display() { System.out.println("Model: " + model + ", Year: " + year); } public static void main(String[] args) { Car myCar = new Car(); // default constructor is called myCar.display(); } }
When to Use
Use the default constructor when you want to create objects quickly without setting initial values. It is useful in simple classes or when you plan to set values later through methods or directly.
In real life, this is like buying a blank notebook (default constructor) and writing inside it later, instead of buying a notebook with pre-filled pages (custom constructor).
If you need to initialize objects with specific data right away, you should write your own constructor instead.
Key Points
- The default constructor has no parameters and is provided only if no other constructors exist.
- It initializes object fields with default values (e.g.,
null, 0, false). - Writing any constructor disables the automatic default constructor.
- You can write your own no-argument constructor to customize default initialization.