Olá Ataide! Apenas complementado a explicação de meus colegas. Veja bem, quando utilizamos herança, nossa classe filha herda todos os atributos e métodos da classe pai, com exceção do Construtor.
Todo construtor é específico de sua classe. No entanto, podemos utilizar o construtor da classe pai, chamando-o da seguinte forma super()
.
Veja que se você não tivesse implementado um construtor na sua classe Pai, ou seja, tivesse deixado o construtor padrão, você não precisaria implementar nas classes filhas. Mas porquê?
Simples, toda classe em java possui o construtor padrão, porém, quando implementamos um novo construtor, esse padrão é "desativado".
Vou usar a classe Conta como exemplo. Assim, veja só, o construtor padrão é da seguinte forma:
public Conta() {
super();
}
Veja que o construtor padrão, nada mais é do que chamar o construtor da classe pai, Mas que classe pai??
A Classe que todas as Classes herdam, por padrão, em java, Object
.
Assim, quando usamos o construtor padrão, o que na verdade estamos fazendo é utilizando o construtor da classe Object, que não recebe parâmetro nenhum.
Mas a partir do momento que você implementa um novo construtor na sua classe Conta, o construtor padrão é desativado e assim não é possível utilizar o construtor padrão na classe filha. Pois pense bem, o construtor padrão da classe filha seria:
public ContaPoupanca() {
super();
}
Ele chama o construtor padrão da classe pai, mas como eu disse, esse construtor está desativado, então não é possível chama-lo mais. Assim, é necessário chamar o construtor correto, o novo por você criado, por isso se faz necessário implementar um construtor na classe filha que chame o construtor correto da classe pai:
public ContaPoupanca(String nome, double saldo, int agencia) {
super(nome, saldo, agencia);
}
Enfim, espero ter ajudado! Bons Estudos!