Uma pergunta, eu posso fazer um construtor na classe mãe e fazer com que todas as instancias e filhos dessa classe sigam um padrão feito pelo construtor da mãe?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Uma pergunta, eu posso fazer um construtor na classe mãe e fazer com que todas as instancias e filhos dessa classe sigam um padrão feito pelo construtor da mãe?
Oii, João! Como vai?
Agradeço por compartilhar sua dúvida com a comunidade Alura.
A resposta curta é: sim, você pode definir um padrão no construtor da classe mãe, mas é importante entender como isso funciona em Java.
1. Construtores não são herdados:
Em Java, construtores não são herdados pelas classes filhas.
Ou seja, quando você cria um construtor na classe mãe, a classe filha não passa a ter esse construtor automaticamente.
Porém, isso não significa que o padrão da classe mãe seja ignorado.
2. O construtor da mãe pode (e deve) ser chamado:
Toda vez que um objeto de uma classe filha é criado, o construtor da classe mãe é executado antes do construtor da filha.
Isso acontece de duas formas:
super(...), quando a classe mãe exige parâmetrosExemplo simples:
public class Titulo {
private String nome;
public Titulo(String nome) {
this.nome = nome;
}
}
Agora uma classe filha:
public class Filme extends Titulo {
public Filme(String nome) {
super(nome);
}
}
Aqui acontece algo importante:
Filme, é obrigatório passar um nomeTitulo) 3. Isso garante um padrão para todas as subclasses:
Se a classe mãe não tiver construtor vazio, todas as classes filhas serão obrigadas a chamar o construtor dela corretamente.
Isso é muito usado para:
No contexto do curso, faz muito sentido:
Titulo precisa de um nomeFilme e toda Serie também precisamRegra importante para guardar:
Se a classe mãe tem apenas construtores com parâmetros, então:
super(...)Isso é o Java te protegendo de criar objetos inválidos.
Você não “força” os filhos a usar o construtor da mãe por herança direta, mas define o padrão exigindo que ele seja chamado.
É exatamente assim que garantimos consistência e boas práticas em sistemas orientados a objetos.
Muito obrigado, Lorena está muito mais claro agora