Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao compilar

De acordo com o que é pedido no exercício 4 da aula 2: Herança, reescrita e polimorfismo, tenho o seguinte código:

class Conta {
    protected double saldo;

    public double getSaldo(){
        return this.saldo;
    }

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

    public void saca(double valorSacado){
        this.saldo -= valorSacado;
    }

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

    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;
        }
    }

}

class TestaContas {
    public static void main(String[] args) {
        Conta c = new Conta();
        ContaCorrente cc = new ContaCorrente();
        ContaPoupanca cp = new ContaPoupanca();

        c.deposita(1000); 
        cc.deposita(1000); 
        cp.deposita(1000);

        c.atualiza(0.01);
        cc.atualiza(0.01);
        cp.atualiza(0.01);

        System.out.println(c.getSaldo());
        System.out.println(cc.getSaldo());
        System.out.println(cp.getSaldo());

    }
}

e ao compilar apresenta o seguinte erro:

Conta.java:41: error: cannot find symbol ContaCorrente cc = new ContaCorrente(); ^ symbol: class ContaCorrente location: class TestaContas

Conta.java:41: error: cannot find symbol ContaCorrente cc = new ContaCorrente(); ^ symbol: class ContaCorrente location: class TestaContas

Conta.java:42: error: cannot find symbol ContaPoupanca cp = new ContaPoupanca(); ^ symbol: class ContaPoupanca location: class TestaContas

Conta.java:42: error: cannot find symbol ContaPoupanca cp = new ContaPoupanca(); ^ symbol: class ContaPoupanca location: class TestaContas 4 errors

1 resposta
solução!

Boa tarde Vinicius,

O problema é porque não fechou chaves corretamente pra primeira class, a Conta, e ai o compilador entende que tudo está dentro dela.

O certo é:

class Conta {
    protected double saldo;

    public double getSaldo(){
        return this.saldo;
    }

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

    public void saca(double valorSacado){
        this.saldo -= valorSacado;
    }

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

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;
        }
}

Assim ele vai entender que ContaCorrente e ContaPoupanca são classes diferentes. Mais para frente no curso irão recomendar que não sejam criadas várias classes em um mesmo arquivo, pois fica mais organizado e evita este tipo de confusão.

Abraço.