Llamar a un constructor desde otro constructor de la misma clase se conoce como encadenamiento de constructores. El propósito real de Constructor Chaining es que puede pasar parámetros a través de un montón de constructores diferentes, pero solo la inicialización se realiza en un solo lugar. Esto permite que las inicializaciones se mantengan en un solo lugar, proporcionando múltiples constructores al usuario. Si no concatenamos y dos constructores diferentes requieren un parámetro específico, tendrá que inicializar ese parámetro dos veces y cuando cambie la inicialización, tendrá que cambiarlo en cada constructor, en lugar de solo en uno.
Como regla, los constructores con menos argumentos deberían llamar a aquellos con más
Entendamos esto con la ayuda de un ejemplo.
Ejemplo de encadenamiento de constructores
En este ejemplo, tengo varios constructores, un constructor llama a otro constructor usando esta palabra clave.
this () siempre debe ser la primera declaración en constructor de lo contrario, recibirá este mensaje de error: Excepción en el hilo “main” java.lang.Error: Problema de compilación no resuelto: la llamada al constructor debe ser la primera declaración en un constructor
class Employee { public String empName; public int empSalary; public String address; //default constructor of the class public Employee() { //this will call the constructor with String param this("Chaitanya"); } public Employee(String name) { //call the constructor with (String, int) param this(name, 120035); } public Employee(String name, int sal) { //call the constructor with (String, int, String) param this(name, sal, "Gurgaon"); } public Employee(String name, int sal, String addr) { this.empName=name; this.empSalary=sal; this.address=addr; } void disp() { System.out.println("Employee Name: "+empName); System.out.println("Employee Salary: "+empSalary); System.out.println("Employee Address: "+address); } public static void main(String[] args) { Employee obj = new Employee(); obj.disp(); } }
Producción:
Employee Name: Chaitanya Employee Salary: 120035 Employee Address: Gurgaon