Guía y comprobaciones
Mismo nombre, sin tipo de retorno
Un constructor participa en la creación de una instancia. Tiene el nombre de la clase y no declara tipo de retorno, ni siquiera void. Si escribes void Libro(...), has declarado un método ordinario, no un constructor.
Ejemplo completo en Ejemplo.java:
class Libro {
private final String titulo;
private final int paginas;
Libro(String titulo, int paginas) {
if (titulo == null || titulo.isBlank() || paginas <= 0) {
throw new IllegalArgumentException("Datos del libro no válidos");
}
this.titulo = titulo;
this.paginas = paginas;
}
Libro(String titulo) {
this(titulo, 100);
}
String resumen() { return titulo + ": " + paginas; }
}
public class Ejemplo {
public static void main(String[] args) {
Libro libro = new Libro("Cuaderno", 80);
System.out.println(libro.resumen()); // Cuaderno: 80
}
}
El uso de String.isBlank requiere Java 11 o posterior. El valor 100 de la sobrecarga es una decisión del ejemplo, no una propiedad que deba tener cualquier libro.
this y validación
this.titulo es el campo de la instancia; titulo es el parámetro. Escribir nombres iguales no los convierte en la misma variable. La validación evita que el objeto nazca con un título ausente o una cantidad imposible de páginas.
Los campos final del ejemplo se asignan durante la construcción y no se vuelven a reasignar. Esa propiedad no vuelve inmutable cualquier objeto automáticamente: si un campo final contiene una lista modificable, su contenido puede seguir cambiando.
Constructor sin argumentos
En una clase ordinaria, si no declaras constructores, el compilador puede proporcionar uno por defecto. Cuando declaras uno con parámetros, no se añade automáticamente otro sin parámetros. Por eso new Libro() no compila en este ejemplo.
Una clase hija debe cumplir también la construcción de su clase base. Antes de añadir herencia sólo para reutilizar un constructor, revisa si la relación expresa realmente «es un». Para reunir varios objetos sin esa relación, la composición suele ser más directa.
Prueba una creación válida y una inválida
Comprueba un título normal, uno en blanco y páginas cero. Un fallo controlado al construir es más fácil de localizar que una excepción lejana cuando otro método intenta utilizar datos incompletos.
Preguntas frecuentes
¿Un constructor devuelve void?
No declara ningún tipo de retorno. Añadir void lo convertiría en un método con el mismo nombre.
¿Puedo tener varios constructores?
Sí, con listas de parámetros distintas. Una sobrecarga puede delegar en otra para centralizar la validación.
Continúa con una guía relacionada
Documentación oficial
Fuentes consultadas
Fuentes y referencias
Consulta referencias útiles para ampliar o contrastar esta guía.
Siguiente lectura
Guias relacionadas para continuar
Si quieres seguir con el mismo tema, aqui tienes paginas cercanas que amplian la tecnica, comparan variantes o te llevan a la siguiente rutina.