Ya sabemos como crear objetos a través de la definición de la clase pero ¿qué hechizo de primer nivel necesitas para crearlo? Una vez que lo sepas no lo olvidarás, ¡su nombre es constructor!

Cuando hayas construido una buena definición de una clase, lo que querrás hacer es usarla y para ello necesitas tener un constructor, por ejemplo como las siguientes líneas de código Java:

public class HelloWorld {
    HelloWorld () {
        System.out.println ("Hello World");
    }
}

¿Puedes ver un método que se llama “HelloWorld ()”? ¿Sí? Pues ya has visto tu primer constructor.

Básicamente un constructor es algo como un método que tiene el mismo nombre de la clase (si te estás preguntando que es un método, quizás le puedes echar un vistazo a la entrada que escribí), que no devuelve ningún valor (es más, si os fijáis, no hay definido nada como valor de retorno) y será llamado cada vez que un objeto se inicializa, es decir, en el principio de su vida.

¿Para que sirve un constructor? Pues es muy útil para inicializar procesos, controlar algo, etc. Piensa un poco sobre ello y verás que siempre hay algún objeto que necesita hacer cosas antes de empezar a operar con él.

Para ver con más profundidad como funciona un constructor, vamos a cambiar un poco nuestro ejemplo anterior:

public class HelloWorld {
    
    HelloWorld(int number) {
        System.out.println("Hello World " + number);
    }
    
    public void saySomething () {
        System.out.println("Something");
    }

    public static void main(String []args){
        System.out.println("Beginning");
        
        HelloWorld h = new HelloWorld(1);
        h.saySomething();
        
        System.out.println("Ending");
    }
}

Una pequeña nota que necesitas saber y es que si quieres llamar a tu clase como un programa, es decir, que puedas ejecutarlo directamente desde el sistema operativo que tengas, necesitas que esa clase tenga un método estático con el nombre de “main”, siendo esto un estándar en Java. Entonces, si tenemos un método llamado main, que sea estático y ejecutas el programa desde el sistema operativo, el contenido de ese método será ejecutado.

Después de esta explicación un tanto rara (como en otras ocasiones, lo veremos en más profundidad en otra entrada), aquí vamos a ver la salida del programa:

Beginning                                                                                                                                                                 
Hello World 1                                                                                                                                                              
Something                                                                                                                                                                 
Ending

Primero vemos “Beginning” porque el método main se llama en primer lugar porque suponemos que llamamos a la clase desde el sistema opeativo. Entonces vemos que tenemos el mensaje de “Hello World 1” porque hemos creado el objeto en el método main con la instrucción “new HelloWorld(1)” y, como hemos visto anteriormente, lo primero que hace un objeto al nacer es llamar a su constructor. Después de eso, vemos el mensaje “saySomething” porque hemos llamado a ese método y finalmente el “Ending” del método main. ¿A qué es sencillo?

Quizás te estén preguntando porque en otras entradas en este blog hemos creado objetos sin haber definido un constructor. Lo primero es decir que Java intenta ser vuestro amigo y se preocupa de un montón de cosas, con lo que si no defines un constructor él creará uno por defecto que no tendrá ningún parámetro ni hará nada… pero estará ahí en las sombras y todo funcionará correctamente; pero recordar un detalle, si creas un constructor a mano, no tendrás el constructor por defecto y eso tiene repercusiones. Si volvéis a mirar el ejemplo anterior, si pusiéramos “new HelloWorld()” sin parámetros, la compilación fallaría porque no existe ese constructor y ¿por qué? Pues porque hemos definido ya uno con un parámetro.

Y esto ha sido todo por ahora. Ya podéis utilizar vuestros nuevos amigos sin problemas.

 

Leave a Reply

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

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>