martes, 6 de enero de 2015

Sobrecarga en Java

Entendemos por sobrecarga de una clase cuando esta tiene mas de un constructor o más de un método con el mismo nombre, siempre y cuando se diferencien en los parámetros.

Una clase en java puede tener varios constructores y también varios métodos con el mismo nombre siempre y cuando se diferencien en los parámetros que tengan, es decir, podemos encontrarnos varios constructores en una clase siempre y cuando sus parámetros (número o tipo) sean diferentes.

Todo esto nos proporciona varias maneras de llevar a cabo una tarea mediante diferentes conjuntos de parámetros. Esto es lo que se conoce cómo sobrecarga. Sobrecarga de un constructor en el caso de los constructores y sobrecarga de método en el caso de los métodos.

Aquí os pongo un ejemplo de una clase con sobrecarga tanto en el constructor cómo en los métodos:


public class Robot
{
    private int x, y;

    public Robot()
    {
        x = 0;
        y = 0;
    }

    public Robot(int a, int e)
    {
        x=a;
        y=e;
    }

    public void cambiarPosicion(int h)
    {
        x=h;

    }

    public void cambiarPosicion(int h, int v)
    {
        x=h;
        y=v;
    }

    public int obtenerPosicionX()
    {
        return x;
    }

    public int obtenerPosicionY()
    {
        return y;
    }

}


Cómo vemos tenemos 2 constructores, uno que nos crea el objeto, en este caso Robot en la posición 0,0 y otro que tiene 2 parámetros que nos lo crea en la posición que le demos en los parámetros. Dependiendo de si usamos uno u otro tendremos las posibilidades de asignarle la posición inicial o que nos lo cree por defecto en las coordenadas que tiene en la clase.

También tenemos dos métodos con el mismo nombre que es cambiarPosición, cómo vemos uno solo tiene un parámetro que solo nos cambia la posición x y el otro tiene dos parámetros que nos permite cambiar la posición x y la y. Cómo vemos dependiendo de si usamos uno u otro tendremos dos posibilidades, o cambiar sólo la x o cambiar la x y la y.

Salvo rara ocasión yo no suelo usar la sobrecarga, alguna vez en los constructores si la he usado, pero en los métodos y funciones no la suelo usar, lo que hago es cambiar el nombre por completo del método y así me lío menos al tener los dos métodos más diferenciados.

Cualquier cosa no dudéis en ponerla en los comentarios ;)




No hay comentarios:

Publicar un comentario