Haga lo que hicimos en aula: declarando constructores Próxima Actividad
¡Ahora es tu oportunidad! Haz el mismo procedimiento que hice en clase, declarando y usando constructores en las clases del proyecto. En la clase Titulo, declara el constructor que recibe el nombre y la fecha de lanzamiento:
package com.alura.screenmatch.modelos; public class Titulo { //atributos omitidos public Titulo(String nombre, int fechaDeLanzamiento) { this.nombre = nombre; this.fechaDeLanzamiento = fechaDeLanzamiento; } //metodos omitidos } Copia el código En la clase Serie, será necesario declarar el mismo constructor, y llamará al constructor de la clase madre usando la palabra reservada super:
pacakge com.alura.screenmatch.modelos;
public class Serie extends Titulo { //atributos omitidos public Serie(String nombre, int fechaDeLanzamiento) { super(nombre, fechaDeLanzamiento); } //metodos omitidos } Copia el código Lo mismo se debe hacer con la clase Película:
pacakge com.alura.screenmatch.modelos;
public class Pelicula extends Titulo implements Clasificable{ //atributos omitidos public Pelicula(String nombre, int fechaDeLanzamiento) { super(nombre, fechaDeLanzamiento); } //metodos omitidos } Copia el código Finalmente, en la clase Principal, corrije los errores de compilación que están sucediendo al instanciar los objetos Pelicula y Serie, pasando el nombre y fecha de lanzamiento en el constructor. Por ejemplo:
Pelicula favorita = new pelicula(“The Matrix”, 1999);
SOLUCION: ¡Excelente! Aquí está el código corregido, aplicando los constructores y solucionando los errores de compilación en la clase Principal:
package com.alura.screenmatch.modelos;
public class Titulo { // atributos omitidos public Titulo(String nombre, int fechaDeLanzamiento) { this.nombre = nombre; this.fechaDeLanzamiento = fechaDeLanzamiento; } // métodos omitidos }
package com.alura.screenmatch.modelos;
public class Serie extends Titulo { // atributos omitidos public Serie(String nombre, int fechaDeLanzamiento) { super(nombre, fechaDeLanzamiento); } // métodos omitidos }
package com.alura.screenmatch.modelos;
public class Pelicula extends Titulo implements Clasificable { // atributos omitidos public Pelicula(String nombre, int fechaDeLanzamiento) { super(nombre, fechaDeLanzamiento); } // métodos omitidos }
// Clase Principal (corregida) package com.alura.screenmatch;
import com.alura.screenmatch.modelos.Pelicula; import com.alura.screenmatch.modelos.Serie;
public class Principal { public static void main(String[] args) { Pelicula miPeliculaFavorita = new Pelicula("The Matrix", 1999); Serie miSerieFavorita = new Serie("Friends", 1994);
// ... resto del código ...
}
}
Cambios realizados:
Constructores en Titulo, Serie y Pelicula: Se agregaron los constructores que reciben nombre y fechaDeLanzamiento, y en las subclases se llama al constructor de la superclase (Titulo) usando super. Principal corregida: Se corrigieron las instanciaciones de Pelicula y Serie para pasar los argumentos requeridos por sus constructores. Puntos importantes:
super: La palabra clave super se utiliza para llamar al constructor de la superclase. Es importante hacerlo al principio del constructor de la subclase. Errores de compilación: Los errores de compilación originales ocurrían porque se intentaba crear objetos de Pelicula y Serie sin proporcionar los argumentos que sus constructores ahora esperan. Case-sensitive: Java es sensible a mayúsculas y minúsculas. Asegúrate de que los nombres de las clases y variables coincidan exactamente al crear objetos (por ejemplo, new Pelicula(...) en lugar de new pelicula(...)).