- Clase Titulo
Se declara un constructor que recibe nombre y fecha de lanzamiento.
package com.alura.screenmatch.modelos;
public class Titulo {
private String nombre;
private int fechaDeLanzamiento;
public Titulo(String nombre, int fechaDeLanzamiento) {
this.nombre = nombre;
this.fechaDeLanzamiento = fechaDeLanzamiento;
}
public String getNombre() {
return nombre;
}
public int getFechaDeLanzamiento() {
return fechaDeLanzamiento;
}
}
2. Clase Serie
Esta clase hereda de Titulo, por lo que su constructor debe llamar al constructor de la clase padre usando super().
package com.alura.screenmatch.modelos;
public class Serie extends Titulo {
public Serie(String nombre, int fechaDeLanzamiento) {
super(nombre, fechaDeLanzamiento);
}
}
3. Clase Pelicula
También hereda de Titulo y llama al constructor padre.
package com.alura.screenmatch.modelos;
public class Pelicula extends Titulo implements Clasificable {
public Pelicula(String nombre, int fechaDeLanzamiento) {
super(nombre, fechaDeLanzamiento);
}
}
4. Clase Principal
Aquí se corrigen los errores al crear los objetos, pasando nombre y fecha al constructor.
import com.alura.screenmatch.modelos.Pelicula;
import com.alura.screenmatch.modelos.Serie;
public class Principal {
public static void main(String[] args) {
Pelicula favorita = new Pelicula("The Matrix", 1999);
Pelicula otra = new Pelicula("Titanic", 1997);
Serie serie = new Serie("Breaking Bad", 2008);
System.out.println(favorita.getNombre());
System.out.println(otra.getNombre());
System.out.println(serie.getNombre());
}
}
Conceptos que se aplican en este ejercicio
Constructores
Herencia
Uso de super()
Creación de objetos
Encapsulamiento con getters
super() permite llamar al constructor de la clase padre, lo cual es necesario cuando esa clase no tiene constructor vacío.