Constructors in Java are important features of Java that mainly help in the initialization of objects. They also let the programmer enter default values or carry out a certain activity during object creation. This article introduces constructors, their types, and how to apply, the different benefits of constructors that will help ease your programming experience in Java.
Constructors in Java
What Are Constructors in Java?
When we create an object in Java, constructors step in to set things up. They are special methods that help initialize objects and perform setup tasks automatically. By learning how to use constructors, you can make your code cleaner and more efficient.
Key Features of Constructors:
- They don’t have a return type.
- Their name must match the class name.
- They are called automatically when an object is created.
- Primarily used for initializing variables or performing setup tasks.
Example:
class Passion2Code {
// Constructor
Passion2Code()
{
super();
System.out.println("Constructor Called");
}
// main method
public static void main(String[] args)
{
Passion2Code passion2Code = new Passion2Code();
}
}
When a Java Constructor is Called
A constructor is invoked in a very automatic manner when an object of a class is instantiated. It takes care of all the necessary initialization tasks right when the object is created.
Example:
class Passion2Code{
// Constructor
Passion2Code(){
System.out.println("The constructor has been invoked.");
}
public static void main(String[] args){
Passion2Code obj = new Passion2Code(); // Here the constructor is invoked
}
}
Explanation
In the above-mentioned example, the constructor is invoked immediately when the Passion2Code object is created using the new keyword. It is this auto-invocation that makes the constructors so special.
Types of Constructors
In Java, constructors are categorized into two main types:
- Argument or Parameterized Constructor
- Zero-Argument or Non-Parameterized Constructor
Argument or Parameterized Constructor
These constructors accept arguments or parameters to initialize objects with specific values.
Syntax:
Example:
class Student {
String name;
int age;
// Constructor
Student(String name, int age)
{
name = name;
age = age;
}
// main method
public static void main(String[] args)
{
Student student = new Student(“Katy”, 25);
System.out.println(“Name is :" + student.name
+ " and student age is :" + student.age");
}
}
Explanation:
The Student class has a parameterized constructor that allows us to pass specific values for name and age when creating an object. This makes it flexible and reusable.
Zero-Argument or Non-Parameterized Constructor
These are the constructors which do not take any arguments. They are used to perform common tasks for instantiation.
There are two subtypes as mentioned here:
- Default Constructor
- Explicit or Non-Default or Zero-Argument or Non-Parameterized Constructor
1. Default Constructor
If you have not defined any constructor, then Java provides a default constructor. The default constructor initializes instance variables with default values (e.g., 0 for integers and null for objects).
Key Features of Default Constructors:
- It is a constructor which is created by the compiler internally.
- Default constructors are created only when the programmer doesn’t provide or create any constructors.
- If a user or programmer creates any constructor, then a default constructor won’t be created.
Example:
class Passion2Code {
// Default Constructor
// Passion2Code() {
// }
public static void main(String[] args)
{
Passion2Code hello = new Passion2Code();
System.out.println("Default constructor invoked.");
}
}
Explanation:
In this case, Java internally creates a default constructor for the Passion2Code class. If no user-defined constructor is present, this ensures objects can still be created.
2. Explicit or Non-Default or Zero-Argument or Non-Parameterized Constructor
If any constructor is created without arguments, then these types of constructors are known as Explicit or Non-Default or Zero-Argument or Non-Parameterized Constructor.
- This is explicitly defined by the programmer to initialize instance variables with default or specific values.
- These are mainly used to perform independent tasks or initialization. These are also used for common value or data initialization for all the objects.
Example:
class Student {
String name;
int age;
// User-Defined Zero-Argument Constructor
Student()
{
name = “John”;
age = 25;
}
// main method
public static void main(String[] args)
{
Student student = new Student();
System.out.println("Name: " + student.name);
System.out.println("Age: " + student.age);
}
}
Explanation:
Here, the Student class has a zero-argument constructor that initializes the name and age variables with default values. When we create an object of the Student class, the constructor is called, and these values are assigned automatically.
Summary
- Constructors allow the easy creation and initialization of objects.
- Zero-arg constructors enable one to set common default values and can be either default or user-defined.
- Parameterized constructors give flexibility to initialize objects with particular data.
Must Read
Class and Objects in Java
– Dive into the core concepts of object-oriented programming by exploring how to create and use classes and objects in Java.
Java Methods
– Learn how to define and use methods in Java, including method declaration, invocation, and the importance of methods in organizing code.
FAQ’S
What is a constructor in Java?
A constructor in Java is a special method used to initialize objects. It is automatically called when an object is created.
Can a Java constructor be private?
Yes, a constructor can be declared private. A private constructor is used to restrict object creation, often in singleton design patterns.
What is the difference between a default constructor and a user-defined zero-argument constructor?
- A default constructor is created by Java automatically when no constructors are defined in the class.
- A user-defined zero-argument constructor is explicitly written by the programmer to perform specific initialization tasks.
When is a constructor called in Java?
A constructor is called automatically when an object of a class is created using the new keyword.
Can a constructor have a return type in Java?
No, constructors in Java do not have a return type, not even void. This distinguishes them from regular methods.
What is the purpose of a parameterized constructor?
A parameterized constructor allows the initialization of objects with specific values, making the object more flexible and reusable.
Can a class have multiple constructors?
Yes, a class can have multiple constructors. This is called constructor overloading, where constructors have the same name but differ in the number or type of parameters.
What happens if no constructor is defined in a class?
If no constructor is defined, Java automatically provides a default constructor that initializes instance variables with default values.