Contenido del curso
Pensando en objetos
Construcción de clases y modelado de objetos
- 10

Métodos estáticos para clases utilitarias en Java
08:43 min - 11

Constantes en Java: inmutabilidad con static final
04:08 min - 12

Constructores en Java para objetos con datos
Viendo ahora - 13

Gestión de memoria en Java: stack, heap y garbage collector
07:04 min - 14

Encapsulamiento en Java: Atributos privados y métodos getter y setter
09:26 min - 15

Listas en Java: agregar, recorrer y eliminar
11:12 min - 16

Asociación, agregación y composición en Java
03:45 min - 17

Menú interactivo en Java con switch
11:37 min - 18

Buscar y eliminar películas en Java
09:20 min
Estructuras de datos y Java moderno
- 19

Streams y lambdas para filtrar listas en Java
11:55 min - 20

Ordenar y transformar listas con streams en Java
11:49 min - 21

Validación de entrada con enums en Java
11:56 min - 22

Excepciones personalizadas en Java
08:16 min - 23

Records para simplificar código inmutable en Java
06:59 min - 24

Mapas en Java para contar visualizaciones de películas
09:47 min - 25

Leer archivos planos con Java nio
13:48 min - 26

Escribir en archivos planos con Files.writeString
09:50 min
Reutilización y diseño orientado a objetos
Constructores en Java para objetos con datos
Resumen
Crear objetos en Java con información desde el primer momento es posible gracias a los constructores, una herramienta que mejora la seguridad, la legibilidad y la eficiencia de tu código orientado a objetos. Si vienes usando new Película() sin parámetros, aquí descubrirás por qué conviene dar el siguiente paso y cómo aplicarlo en proyectos reales.
¿Qué es un constructor en Java y para qué sirve?
Un constructor es una operación especial que inicializa los valores de un objeto en el momento de su creación. No retorna nada y debe llamarse exactamente igual que la clase. Cuando escribes new Película() sin argumentos, estás usando el llamado constructor por defecto, que Java provee automáticamente mientras tú no definas uno propio.
¿Qué es un constructor por defecto? Es el constructor sin parámetros que Java crea automáticamente si no defines ninguno. En cuanto declaras tu propio constructor, Java deja de proveerlo.
El constructor se declara después de los atributos, como buena práctica, usando la palabra public seguida del nombre de la clase. Dentro recibe los parámetros que el objeto debería tener desde su nacimiento.
¿Cómo se escribe un constructor paso a paso?
Imagina la clase Película. Quieres que toda película nazca con título, duración y género. El constructor se vería así:
java public Película(String título, int duración, String género) { this.título = título; this.duración = duración; this.género = género; this.fechaEstreno = LocalDate.now(); this.disponible = true; }
La palabra reservada this hace referencia a los atributos de la clase y los distingue de los parámetros recibidos, aunque tengan el mismo nombre. También puedes inicializar atributos que no llegan como parámetro, como una fechaEstreno con la fecha actual o un disponible en true por defecto, en lugar del false que trae el tipo boolean.
¿Por qué Java exige parámetros al crear un constructor propio?
En cuanto defines un constructor con parámetros, las instanciaciones tipo new Película() empiezan a marcar error. Esto ocurre porque Java asume que tú, como desarrollador, sabes lo que haces y deja de ofrecer el constructor por defecto. Si quisieras conservar la opción sin argumentos, tendrías que declarar tú mismo un segundo constructor vacío.
La buena práctica indica que una clase debe forzar a recibir los datos esenciales al crear el objeto. Una película sin título o sin duración no tiene sentido en tu modelo, así que el lenguaje te ayuda a evitar ese error desde la compilación.
¿Qué ocurre en una sola línea de instanciación?
Cuando escribes algo como Película p = new Película("Inception", 148, "Sci-Fi"); suceden tres cosas:
- Declaración: defines la variable
pde tipoPelícula. - Instanciación: asignas un nuevo objeto con
new Película(...). - Inicialización: pasas los datos con los que el objeto arranca su vida.
Esa diferencia es clave para entender el flujo completo de los objetos.
¿Puede una clase tener varios constructores en Java?
Sí. A esto se le llama sobrecarga de constructores y permite ofrecer distintas formas de crear el mismo tipo de objeto. Por ejemplo, puedes tener un constructor con título, duración y género, y otro que además reciba la calificación. Un truco útil en IntelliJ es usar clic derecho, Generate, Constructor, seleccionar los atributos con la tecla Control y dejar que el IDE genere el código.
¿Cómo reutilizar código entre constructores? Llamando a otro constructor de la misma clase con
this(...). Debe ser la primera línea del constructor que lo invoca.
Dentro de un constructor puedes llamar a otro usando this(título, duración, género); y luego añadir la lógica adicional, como this.calificación = calificación;. Esto evita repetir asignaciones y mantiene el código limpio.
¿Y si quiero validar datos al inicializar?
Los constructores también pueden invocar métodos del propio objeto. Si tienes un método calificar que valida que la calificación esté entre cero y cinco, puedes reemplazar la asignación directa por this.calificar(calificación);. Así la validación viaja con el objeto desde el momento de su creación, no después.
¿Cómo aplicar constructores a otras clases del proyecto?
La misma lógica se replica en la clase Usuario. Decides qué datos mínimos define a un usuario al nacer: nombre y email, por ejemplo. La fecha de registro se asigna por defecto con la fecha actual dentro del constructor.
java public Usuario(String nombre, String email) { this.nombre = nombre; this.email = email; this.fechaRegistro = LocalDate.now(); }
Al instanciar harías new Usuario("Juan", "juan@platzi.com"); y el compilador rechazará cualquier llamada con parámetros distintos. Esta restricción es justamente la ventaja: tus objetos siempre nacen consistentes.
Los constructores ordenan tu código, evitan estados inválidos y reducen errores cuando creces a decenas de clases y miles de objetos. ¿Cómo estás manejando hoy la creación de objetos en tus proyectos? Cuéntame en los comentarios qué constructor te ha dado más dolores de cabeza.