Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre construtores

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?

2 respostas
solução!

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:

  • Automaticamente, se a classe mãe tiver um construtor sem parâmetros
  • Explicitamente, usando super(...), quando a classe mãe exige parâmetros

Exemplo 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:

  • Para criar um Filme, é obrigatório passar um nome
  • Esse nome é tratado no construtor da classe mãe (Titulo)
  • Assim, todas as classes filhas seguem o padrão definido pela mãe

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:

  • Garantir atributos obrigatórios
  • Evitar objetos “incompletos”
  • Centralizar regras importantes da aplicação

No contexto do curso, faz muito sentido:

  • Um Titulo precisa de um nome
  • Logo, todo Filme e toda Serie também precisam

Regra importante para guardar:

Se a classe mãe tem apenas construtores com parâmetros, então:

  • Toda classe filha precisa chamar super(...)
  • Caso contrário, o código não compila

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.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigado, Lorena está muito mais claro agora