What's a Constructor?
In Java, a constructor initializes a new object. It's a special method with the same name as its class. Constructors don't have a return type, not even void, and are called when you use the 'new' keyword.
Default Constructor
If you don't define any constructors, Java provides a default constructor, which is parameterless. It assigns default values to the object's attributes, like null for objects and zero for numeric types.
Parameterized Constructors
Parameterized constructors allow initializing objects with specific values. You can define multiple constructors with different parameter lists—this is known as constructor overloading.
Constructor Overloading
Java supports multiple constructors per class, as long as each has a unique parameter list. It's a technique used for flexibility, allowing objects to be initialized in different ways.
Copy Constructor
A copy constructor clones an object. It takes an object of the same class as a parameter and copies the field values. This is not native to Java but can be implemented manually.
Private Constructors
Private constructors restrict instantiation. They're used in singleton patterns where only one instance exists or utility classes where you only need static methods and don't want instances.
Constructor Chaining
Constructors can call other constructors using 'this()' and 'super()' for current and parent class constructors respectively. This helps avoid code duplication and maintain a cleaner architecture.