Object Oriented Programming with Java

⌘K
  1. Home
  2. Docs
  3. Object Oriented Programmi...
  4. Classes and Objects
  5. Constructors in Java

Constructors in Java

Learn everything about constructors in Java — their types, syntax, and real-life examples. Understand how Java constructors initialize objects, improve code reusability, and make your OOP design more efficient.


Constructors in Java – A Complete Beginner’s Guide

When writing Java programs, one of the first concepts you’ll encounter after learning about classes and objects is constructors. Constructors are a fundamental part of Object-Oriented Programming (OOP) because they help initialize objects automatically when they’re created.

In this article, you’ll learn everything you need to know about constructors in Java, including their definition, types, rules, and examples — all explained in a clear, SEO-optimized, and easy-to-understand way.


1. What is a Constructor in Java?

A constructor in Java is a special method that is automatically called when an object is created. Its main purpose is to initialize the object’s variables with default or user-defined values.

Unlike normal methods, constructors:

  • Have the same name as the class.
  • Do not have a return type, not even void.
  • Are called automatically when the object is created using the new keyword.

Example:

class Student {
    int id;
    String name;

    // Constructor
    Student() {
        id = 101;
        name = "Alice";
    }

    void display() {
        System.out.println(id + " " + name);
    }

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

Output:

101 Alice

Here, the Student() constructor initializes the object automatically when s1 is created.


2. Why Are Constructors Important?

Constructors play a crucial role in object initialization and memory management in Java. They help:

  • Set initial values for object fields.
  • Improve code readability and maintainability.
  • Avoid repetitive initialization code.
  • Enforce proper setup of objects before use.

For example, if you create an object of Employee class, you can use a constructor to assign a unique ID and name right away.


3. Syntax of a Constructor

Syntax:

class ClassName {
    ClassName() {
        // Initialization code
    }
}

Example:

class Car {
    Car() {
        System.out.println("Car object created!");
    }

    public static void main(String[] args) {
        Car c1 = new Car();
    }
}

Output:

Car object created!

4. Types of Constructors in Java

There are two main types of constructors in Java:

  1. Default Constructor
  2. Parameterized Constructor

Let’s explore both in detail.


(a) Default Constructor

A default constructor is automatically provided by Java if you don’t define any constructor in your class. It initializes instance variables with default values.

Example:

class Dog {
    String breed;
    int age;

    Dog() {
        breed = "Labrador";
        age = 3;
    }

    void show() {
        System.out.println("Breed: " + breed + ", Age: " + age);
    }

    public static void main(String[] args) {
        Dog d1 = new Dog();
        d1.show();
    }
}

Output:

Breed: Labrador, Age: 3

(b) Parameterized Constructor

A parameterized constructor allows you to pass values as parameters while creating objects. This makes your program more flexible and dynamic.

Example:

class Employee {
    int id;
    String name;

    // Parameterized Constructor
    Employee(int i, String n) {
        id = i;
        name = n;
    }

    void display() {
        System.out.println(id + " " + name);
    }

    public static void main(String[] args) {
        Employee e1 = new Employee(101, "John");
        Employee e2 = new Employee(102, "Emma");
        e1.display();
        e2.display();
    }
}

Output:

101 John
102 Emma

(c) Copy Constructor (Conceptual)

Java doesn’t provide a built-in copy constructor like C++, but you can create one manually to copy data from one object to another.

Example:

class Book {
    String title;
    double price;

    Book(String t, double p) {
        title = t;
        price = p;
    }

    // Copy Constructor
    Book(Book b) {
        title = b.title;
        price = b.price;
    }

    void display() {
        System.out.println(title + " - $" + price);
    }

    public static void main(String[] args) {
        Book b1 = new Book("Java Programming", 29.99);
        Book b2 = new Book(b1);
        b2.display();
    }
}

Output:

Java Programming - $29.99

5. Rules for Writing Constructors in Java

  • Constructor name must match the class name.
  • Constructors cannot have a return type.
  • They can be overloaded but cannot be inherited.
  • You can call one constructor from another using this().
  • The super() keyword is used to call the parent class constructor.

6. Difference Between Constructor and Method

FeatureConstructorMethod
PurposeInitializes objectDefines behavior or operation
NameSame as class nameCan have any name
Return TypeNo return typeMust have a return type
InvocationCalled automaticallyCalled explicitly
InheritanceNot inheritedCan be inherited

7. Constructor Overloading in Java

Constructor overloading occurs when a class has more than one constructor with different parameter lists. It enables flexibility when creating objects with varying initializations.

Example:

class Rectangle {
    int length, width;

    Rectangle() {
        length = 10;
        width = 5;
    }

    Rectangle(int l, int w) {
        length = l;
        width = w;
    }

    void display() {
        System.out.println("Area: " + (length * width));
    }

    public static void main(String[] args) {
        Rectangle r1 = new Rectangle();
        Rectangle r2 = new Rectangle(15, 8);
        r1.display();
        r2.display();
    }
}

Output:

Area: 50
Area: 120

8. Example Programs of Java Constructors

Here’s a real-world example showing both default and parameterized constructors in action:

class BankAccount {
    String accountHolder;
    double balance;

    // Default Constructor
    BankAccount() {
        accountHolder = "Unknown";
        balance = 0.0;
    }

    // Parameterized Constructor
    BankAccount(String name, double bal) {
        accountHolder = name;
        balance = bal;
    }

    void showDetails() {
        System.out.println("Account Holder: " + accountHolder + ", Balance: $" + balance);
    }

    public static void main(String[] args) {
        BankAccount acc1 = new BankAccount();
        BankAccount acc2 = new BankAccount("Alice", 1000.50);
        acc1.showDetails();
        acc2.showDetails();
    }
}

Output:

Account Holder: Unknown, Balance: $0.0
Account Holder: Alice, Balance: $1000.5

9. Advantages of Using Constructors

  • Automatic initialization of objects.
  • Improved readability and cleaner code.
  • Reduced chances of uninitialized variables.
  • Simplifies object creation and setup.
  • Supports constructor overloading for flexibility.

10. Common Mistakes to Avoid

  • Forgetting to initialize variables inside the constructor.
  • Adding a return type (like void) to the constructor.
  • Not calling super() in subclass constructors when required.
  • Using the same name for parameters and instance variables without this keyword.

11. Conclusion

Constructors in Java are the backbone of object initialization. They ensure your objects are ready to use the moment they’re created, reducing errors and making your code efficient and maintainable.

By mastering constructors — from default to parameterized and overloaded types — you gain a strong foundation in Java OOP concepts.


Frequently Asked Questions (FAQs)

Q1. What is a constructor in Java?
A constructor in Java is a special method used to initialize objects when they are created.

Q2. What are the types of constructors in Java?
There are two main types: Default constructors and Parameterized constructors.

Q3. Can constructors be overloaded in Java?
Yes, constructor overloading allows multiple constructors with different parameter lists in the same class.

Q4. Can constructors return a value?
No, constructors do not have a return type and cannot return any value.

Q5. What happens if we don’t define a constructor?
Java automatically provides a default constructor that initializes variables with default values.

Tags , , , , , , , , ,

How can we help?

Leave a Reply

Your email address will not be published. Required fields are marked *