Olá! Já que criou-se um construtor na classe Título, a IDE me obriga a implementa-lo também nas classes filhas. Por que isso não foi abordado no vídeo? Me equivoquei em algo?
Olá! Já que criou-se um construtor na classe Título, a IDE me obriga a implementa-lo também nas classes filhas. Por que isso não foi abordado no vídeo? Me equivoquei em algo?
Olá, Marcus.
Tudo bem?
Quando você define um construtor personalizado na classe pai (neste caso, Titulo
), o construtor padrão (sem parâmetros) deixa de ser fornecido automaticamente. Portanto, todas as subclasses que herdam dessa classe pai precisam explicitamente chamar um dos construtores definidos na classe pai. Isso é necessário para garantir que a parte da classe pai seja corretamente inicializada.
Por exemplo, se você tem a classe Titulo
com um construtor que aceita parâmetros, como:
public class Titulo {
private String nome;
private int ano;
public Titulo(String nome, int ano) {
this.nome = nome;
this.ano = ano;
}
}
E uma subclasse Filme
, você precisa garantir que Filme
chame o construtor da classe Titulo
. Veja como fazer isso:
public class Filme extends Titulo {
private String diretor;
public Filme(String nome, int ano, String diretor) {
super(nome, ano); // Chama o construtor da classe pai
this.diretor = diretor;
}
}
A chamada super(nome, ano)
no construtor de Filme
é essencial para que a parte da classe Titulo
seja inicializada corretamente. Se você não fizer isso, o compilador Java reclamará, pois ele precisa garantir que todas as partes do objeto (incluindo as herdadas) sejam inicializadas.
Espero ter entendido e conseguido ajudar. Qualquer dúvida manda aqui. Bons estudos!