How to call one constructor from other constructor in Java or What is Constructor Chaining in Java is one of the tricky questions in Java interviews. Well you can use this keyword to call one constructor from other constructor of same class, if you want to call constructor from based class or super class than you can use super keyword. Calling one constructor from other is called Constructor chaining in Java. Constructors can call each other automatically or explicitly using this() and super() keywords. this() denotes a no argument constructor of same class and super() denotes a no argument or default constructor of parent class. Also having multiple constructor in same class is known as constructor overloading in Java.
How Constructor chaining works in Java
As I said Constructor can be call other constructor automatically or explicitly. If you do not call any constructor either from same class or super class than Java compiler will call super() i.e. no argument constructor of Parent class. Also call to another constructor must be first line in Constructor. Suppose you want to call another constructor of same class which accept an int argument, you can use this(1) to call that constructor. Similarly if that constructor is in super class, you can use super(1) to call that constructor. You can not call more than one constructor from a constructor in Java because every constructor call must be first statement. Also if you don't declare any constructor in your class, Java will add default or no argument constructor in your class. In next section we will see an example of how to call one constructor from other in Java.
Constructor Chaining Example in Java
Here is a code example of constructor chaining in Java. In this Java program we show how to call constructor using both this and super keyword. this() calls constructor from same class and super() calls constructor from parent class in Java.
In this example we create an instance of Derived class by calling constructor of Derived class which accept a String argument, that constructor than class to one argument constructor of super class. This is an example of explicitly calling one constructor from other in Java. To demonstrate automatic constructor chaining let's see another example
In this example we are calling no argument constructor of Derived class which automatically calls no argument constructor of Super class, which is Base in this case, which in turn call String argument constructor of Base class. Since there is no explicit constructor call on Derived class no argument constructor it by default calls to super().
Important points about Constructor chaining in Java
Here are few worth noting points about Constructor chaining in Java, which is core of calling one constructor from other in Java program :
1) Call to another constructor of same class or parent class must be first statement in constructor.
2) If you do not call another constructor either from parent class or same class than Java calls default or no argument constructor of super class.
3) If you do not declare any constructor in Java then Java compiler adds a default or no argument constructor in your class, which by default calls no argument constructor of super class. If you don't have a no argument constructor in super class than this would result in compile time error. That's why we should always have a no argument constructor in our class.
That's all on What is Constructor Chaining in Java and How constructor chaining works in Java. Just remember that this() and super() can be used to explicitly call constructor of same class and constructor of parent class in Java. It's also worth remembering points mentioned about special behaviors of Constructor in Java.
Happy New Year to All of You !!!
Happy New Year to All of You !!!
Other Java programming tutorials for programmers