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

encadenamiento de constructor

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
leer  Enlace estático y dinámico en java

Por avivcas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *