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

Dúvida no Ex. 1 da Aula 3 - A IDE Eclipse

Boa Noite Ao fazer o extends da classe Conta para as demais Classes ( ContaCorrrente e ContaPoupanca), ele exigiu nessas classes o construtor em ambas .

Isso e normal quando se extend de uma classe com construtor ?

Sendo assim minha classe ficou assim, Exemplo:

public class ContaPoupanca extends Conta{

    public ContaPoupanca(String nome, double saldo, int agencia) {
        super(nome, saldo, agencia);

    }

    public void atualiza(double taxa){
        this.saldo += this.saldo * taxa * 3;
    }
}
5 respostas

Se você tem isso definido na classe Conta, o construtor recebendo os parâmetros, os filhos também deverão ter.

Ataide como nosso amigo Marcelo falou, sempre que você tiver um construtor em uma classe pai(a classe a ser extendida) e você extende-la em outras classes filhas, você deve criar o construtor sim.

solução!

Ataide, é uma questão bem de lógica. Veja bem:

  1. Você tem um construtor na classe pai, a intenção dos construtores é receber parâmetros e instância objetos de uma maneira mais rápida, correto?

  2. Logo, esse construtor da classe pai vai exibir parâmetros, então se você usa um extends, é necessário ter um construtor na classe também.

Beleza?

Qualquer dúvida retorne, a equipe Alura agradeçe.

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!

Obrigado Galera, eu já imaginava isso mesmo... Mas na duvida vamos ouvir os amigos. Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software