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

Dúvida no Ex. 4 do Capítulo 1 - Herança, reescrita e polimorfismo

´´´ Ao compilar meu código o Java me retorna este erro:

C:\Users\Everton\Google Drive\workspace\Alura>javac Conta.java Conta.java:39: error: non-static variable this cannot be referenced from a static context ContaCorrente cc = new ContaCorrente(); ^ Conta.java:40: error: non-static variable this cannot be referenced from a static context ContaPoupanca cp = new ContaPoupanca(); ^ Conta.java:37: error: Illegal static declaration in inner class Conta.TestaContas public static void main(String[] args){ ^ modifier 'static' is only allowed in constant variable declarations 3 errors

E não Consigo Descobrir o porque...

Segue meu Código, salvo com nome de arquivo Conta.java

public 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;
        }
    public void atualiza(double taxa){
        this.saldo += this.saldo * taxa;
        }

    public class ContaCorrente extends Conta{
        public void deposita(double valor) {
            this.saldo += (valor - 0.10);
        }
        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 valor) {
            this.saldo += valor - 0.10;
        }
    }

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());

    }
}
}
8 respostas

Oi Everto!

Acredito que que você jogou todas as classes em um arquivo só, é melhor cada classe ser um arquivo e dessa forma o código fica mais organizado e você acha o problema.

Você fechou a classe Conta na ultima linha, então todas as classes que você criou ficou dentro da classe Conta. Por isso está acontecendo o problema.

Era isso mesmo, ele teve dificuldade para abrir o tópico! A dúvida dele já foi solucionada em outro tópico.

Caio você tem razão e o Felipe me ajudou em outro tópico, como mencionado pelo Felipe apanhei pra reportar o erro e acabei por enviar a mesma pergunta 2x... Obrigado Caio e mais uma vez obrigado Felipe!

Uma pergunta? Devo criar 1 arquivo.java para cada classe? Na verdade venho mantendo todas em 1 só classe "Conta.java" no caso...

Dessa forma então eu teria: Conta.java ContaCorrente.java ContaPoupanca.java TestaContas.java

Seria isso mesmo?

Na verdade Everton toda vez que você fizer alguma alteração no código você deve compilar tudo novamente.

javac e java.

até logo!

Felipe, quanto a compilação eu compreendo que faz-se necessário a compilação em todos os códigos... Agora, cada classe deve ser salva em 1(um) arquivo separado?

solução!

Isso mesmo. É indicado que você salve em uma pasta separada! Everton, você não precisa ficar preso somente ao cursos daqui, você já pode ir procurando uma IDE (Ambiente de desenvolvimento) Muito raramente você vai desenvolver algo pelo prompt de comando.

Perfeito Felipe, entendi!

Atualmente utilizo o Eclipse para meus estudos... E sempre pesquiso em outras fontes também. Mais uma vez obrigado Felipe por sua ajuda!

Abraço e ótimo dia irmão!

Everton, boa noite. Se puder marca a minha resposta como solução, agradeço amigo!