Declaración de un Constructor en Java

Esta entrada breve va a tratar el tema de los Constructores, sobre lo básico y las reglas que debemos saber antes de aplicarlos, y su declaración correcta.


En Java, los objetos son cosntruidos. Cada vez que hacemos un nuevo objeto, al menos un constructor es invocado. Toda clase tiene un constructor, aunque nosotros no lo hallamos creado explícitamente, el compilador construirá uno por nosotros. Hay toneladas de reglas que conciernen a los constructores, pero los veremos mas adelante. Por ahora, vamos a enfocarnos sobre las reglas básicas de las declaraciones. Aquí usaremos un ejemplo simple:

			class Foo{
				protected Foo(){ } // Este es el constructor de Foo
				protected void Foo() { } //Este es un método mal nombrado, pero legal.
			}
			

Lo primero que vemos es que el constructor se parece mucho a un método. La diferencia clave es que el constructor no puede, nunca, nunca, nunca, tener un valor de retorno, NUNCA!.

Las declaraciones de los constructores sin embargo pueden tener cualquiera de los modificadores de acceso, y pueden tener argumentos (incluidos var-args), como los métodos. La otra GRAN REGLA, es entender que el constructor debe tener el mismo nombre que la clase en la que ha sido declarada. No pueden ser marcados como static, no pueden ser marcados como final o abstract (Porque no pueden ser sustituidos). A continuación veremos unos ejemplos legales e ilegales sobre las declaraciones de los constructores:

			class Foo2 {
				//Constructores legales
				Foo2() { }
				private Foo2 (byte b) { }
				Foo2(int x){ }
				Foo2(int x, int... y){ }
				
				//Constructores Ilegales
				void Foo2() { } 	//Es un método, no un constructor
				Foo() { } 			//No es ni un método ni un constructor
				Foo2(short s); 		//Parece un método abstracto
				static Foo2(float f) { } 	//No puede ser static
				final Foo2(long x) { }		//No puede ser final
				abstract Foo2(char c) { }	//No puede ser abstrac
				Foo2(int... x, int t){ } 	//Mala sintaxis de var-arg
			

Hasta aquí este pequeño comienzo sobre los Constructores en java, aunque veremos mas en siguientes entradas.

Cualquier aporte o corrección es bienvenido.

Saludos!!!