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

Código não compila. Cannot find symbol

Boa noite.

Quando compilo código, no terminal aparece um erro como abaixo:

TestaContas.java:42: error: cannot find symbol c.atualiza(0.01); ^ symbol: method atualiza(double) location: variable c of type Conta 1 error

O código está igual a resposta do professor para este exercício, só que o meu não compila. Não consigo achar a solução. Gostaria que vocês me ajudassem e me explicassem o porquê do erro. Desde já agradeço. Outra dúvida porquê quando eu coloco public em todas as classes o compilador dá erro, e quando eu deixo apenas o main como public, some os erros, não pode colocar public em todas as classes?

class Conta{
        protected double saldo;

        public double getSaldo(){    
            return this.saldo;
        }
        public void deposita(double valor){    
            this.saldo+=valor;
        }
        public void saca(double valor){
            this.saldo-=valor;
        }
}

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

class ContaPoupanca extends Conta{

    public void deposita(double valor){    
            this.saldo+=valor-0.10;
        }
    public void atualiza(double taxa){    
            this.saldo+=this.saldo*taxa*3;
        }
}

public 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());
}
}
3 respostas
solução!

Olá Rafael, você adicionou o método atualiza(double taxa) nas classes ContaCorrente e ContaPoupanca mas não definiu na classe Conta por isso quando tenta acessar c.atualiza(0.01); ocorre o erro.

Lembrando que a classe Conta é a superclasse, as classes que herdam dela possuem seus métodos e não o contrário.

Nossa, verdade. Coloquei o método atualiza na classe Conta e funcionou perfeitamente. Muito obrigado pela resposta João.