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

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

Iai, pessoal!

Estou tendo problemas quando vou compilar o meu programa.

Segue o erro abaixo:

TestaConta.java:5: error: cannot find symbol ContaCorrente cc = new ContaCorrente(); ^ symbol: class ContaCorrente location: class TestaConta TestaConta.java:5: error: cannot find symbol ContaCorrente cc = new ContaCorrente();

O mesmo erro acontece também para a subclasse ContaPoupanca.

Código abaixo:

public class Conta{
    protected double saldo;

    public class ContaCorrente extends Conta{

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

    public class ContaPoupanca extends Conta{

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

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

    }

    public void saca(double valorSacado){
        if(this.saldo < valorSacado){
            System.out.println("Voce nao possui saldo suficiente!");
        }

        else{
            this.saldo -= valorSacado;
        }
    }

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

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

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

}
public class TestaConta{
    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());


    }
}
4 respostas
solução!

Olá Thalys! Este erro está ocorrendo pois você colocou uma Classe dentro de outra Classe e isso não existe em Java. O mais correto é cada Classe está em seu próprio arquivo .java, mas também é possível colocar várias classes em um mesmo arquivo. Olhe seu código novamente e veja que a Classe ContaCorrente e ContaPoupança estão dentro do escopo da Classe Conta e isso não deveria ocorrer. O correto seria estar assim:

public class Conta{
    protected double saldo;


    public void saca(double valorSacado){
        if(this.saldo < valorSacado){
            System.out.println("Voce nao possui saldo suficiente!");
        }

        else{
            this.saldo -= valorSacado;
        }
    }

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

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

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

}



    public class ContaCorrente extends Conta{

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



    public class ContaPoupanca extends Conta{

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

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

    }

Ah, verdade. Acho que acabei me confundindo por causa do extends. Mas consegui entender aqui agora. Valeuzão aí, cara!

Por nada Thalys! Qualquer coisa só perguntar. Bons Estudos!

Thalys, bom dia. Sugiro que você começe a estudar sobre uma IDE de desenvolvimento, para java as mais conhecidas são NetBeans e Eclipse. Com uma IDE profissional você poderá fazer as classes separadas e bem organizadas, no começo tive as mesmas dificuldades. Estude mais sobre o assunto, abraços.

Bons estudos!