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

Erro na chamada do depósito

Quando estou chamando o método deposita o eclipse está gerando um erro. Que seria o seguinte:

" O total de contas é 1 Estou criando uma conta 111 Exception in thread "main" java.lang.Error: Unresolved compilation problem: Cannot use this in a static context

at Conta.deposita(Conta.java:18)
at TesteContas.main(TesteContas.java:7)

"

O Código da classe conta é o seguinte :

public class Conta { private double saldo; private int agencia; private int numero; private Cliente titular; private static int total;

public Conta(int agencia, int numero) {
    Conta.total++;
    System.out.println("O total de contas é " + Conta.total);
    this.agencia = agencia;
    this.numero = numero;
    System.out.println("Estou criando uma conta " + this.numero);
}

public static void deposita(double valor){
    this.saldo += valor;

}

public boolean saca(double valor){
    if(this.saldo >= valor) {
        this.saldo -= valor;
        return true;
    } else {

        return false;
    }

}

public boolean transfere(double valor, Conta destino) {
    if(this.saldo >= valor) {
        saca(valor);
        destino.deposita(valor);
        return true;
    } 
    return false;
}

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

public int getNumero() {
    return this.numero;
}

public void setNumero(int numero) {
    if(numero <= 0) {
        System.out.println("Não pode valor <= 0");
        return;
    }
    this.numero = numero;
}

public int getAgencia() {
    return this.agencia;
}

public void setAgencia(int agencia) {
    if (agencia <= 0) {
        System.out.println("não pode valor menor igual a 0");
        return;
    }
    this.agencia = agencia;
}

public void setTitular(Cliente titular) {
    this.titular = titular;
}

public Cliente getTitular() {
    return titular;
}

public static int getTotal() {
    return Conta.total;
}

}

E o código da Testa Contas é esse : 


public class TesteContas {

public static void main(String[] args) {

    ContaCorrente contaCorrente = new ContaCorrente(111,111);
    ContaCorrente.deposita(100.0);

    ContaPoupanca contaPoupanca = new ContaPoupanca(222, 222);
    contaPoupanca.deposita(200.0);

    contaCorrente.transfere(10.0, contaPoupanca);

}

}

`

O erro é apontado na linha 18, no this.saldo += valor; Alguém pode me ajudar a entender e corrigir?

3 respostas
solução!

Boa tarde, Thiago! Como vai?

O problema é que o método deposita() está marcado como static! Nesses casos, não se pode utilizar o this como vc está fazendo dentro desse método. Isso se deve pq o this faz referência à uma instância da classe e métodos estáticos não fazem parte do contexto de instâncias e sim das próprias classes!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Bom dia, Professor! Tudo resolvido e funcionando, obrigado mesmo!

Por nada, Thiago! Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!

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