martes, 28 de mayo de 2013

Java: llamar a la función constructora desde otra función constructora de la misma clase

Buenas a todos!
Llamar a una función constructora dentro de la misma clase, puede ayudarnos a reducir el código, evitando que reescribamos las mismas inicializaciones y que tengamos código duplicado.
Por ejemplo, supongamos que tenemos dos formas de crear un objeto de una clase Rectangle:
- Indicando las coordenadas (x,y) y el ancho y alto del rectángulo. (por defecto será azul)
- Indicando el ancho y alto del rectángulo y el color del rectángulo. (por defecto estará en las coordenadas 0,0)

Con la función this() podemos llamar a cualquier método constructor de la clase, esta función sólo puede ser llamada al principio del constructor, y nos permitirá no tener que duplicar códigos de inicialización.

public Rectangle{

public float x;
public float y;
public float width;
public float height;
public float[] color = {0f, 192f, 255f};

public Rectangle(float x, float y, float width, float height){
this.x = x;

this.y = y;
this.width  = width;
this.height = height;
}

public Rectangle(float width, float height, float[] color){
this(0f, 0f, width, height);
this.color = color;
}
}


Como podéis ver en el segundo método constructor inicializo directamente los valores de x, y, width y height llamando al primer constructor, esto es muy útil cuando tenemos constructores grandes, y facilita el mantenimiento del código.

Un saludete!