Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvida no Ex. 4 da Aula 2 - Herança, reescrita e polimorfismo

Gostaria de saber se uma classe filha herda o Construtor da classe mãe?

No meu código a classe mãe possui um Construtor e nas filhas eu não coloquei, quando fui compilar apresentava o erro abaixo: Conta.java:59: cannot find symbol symbol : constructor Conta() location: class Conta class ContaCorrente extends Conta { ^ Conta.java:65: cannot find symbol symbol : constructor Conta() location: class Conta class ContaPoupanca extends Conta{ ^ 2 errors

Quando eu inseri um construtor padrão na classe Conta, consegui compilar.

class Conta{
    public int numero;
    protected static int numeroIncremental = 1;
    Cliente titular;
    protected double saldo;
    protected double limite;

    /*Se eu comentar essa parte o código não compila*/
    public Conta(){

    }

    public Conta(double limite, double saldoInicial){
        this.numero = numeroIncremental;
        numeroIncremental++;
        this.limite = limite;
        this.saldo = saldoInicial;
    }

    public void deposita(double valorASerDepositado) {
        this.saldo += valorASerDepositado;
    }

    public void saca(double valor) {
        if(this.saldo + this.limite < valor){
            System.out.println("Saca Invalido");
        }else {
            this.saldo += valor;
        }
    } 
    public double getSaldo(){
        return this.saldo;
    }

    public void setLimite(double novoLimite){
        this.limite = novoLimite;
    }

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

class Cliente{
    String nome;
    String endereco;
    String cpf;
    String dataDeNascimento;
}

class ContaCorrente extends Conta {
    public void atualiza(double taxa){
        this.saldo += this.saldo * taxa * 2;
    }
}

class ContaPoupanca extends Conta{
    public void atualiza (double taxa){
        this.saldo += this.saldo * taxa * 3;
    }

    public void deposita(double valor){
        this.saldo += valor - 0.10;
    }
}
4 respostas
solução

Você pode se referenciar com o super. Exemplo.

public ContaCorrente(double limite, double saldoInicial) {
    super(limite, saldoInicial);
 }

Era essa sua duvida?

Isso mesmo, então se eu tiver um construtor explícito na classe mãe, eu tenho que "recriar" ele referenciando com o "super" na classe filha.

Exatamente, fico claro a lógica do construtor para você?

Ficou sim, muito obrigado! A dúvida foi nesse sentido da herança somente.

abraços