3
respostas

duvida do q devo fazer

não estou entendendo onde estou errando ? / To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. */ package conta;

import conta.Conta.ContaCorrente; import conta.Conta.ContaPoupanca;

/* @author Bruno / public class TestarContas {

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

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

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

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

} }

acima é o main

abaixo é o onde esta as contas

/ To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. */ package conta;

/* @author Bruno / public class Conta {

protected double saldo;

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

public void depositar(double dinheiro) {

this.saldo += dinheiro; }

public void sacar (double dinheiro) {

if (dinheiro > saldo) this.saldo -= dinheiro; }

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

} }

3 respostas

Olá, Bruno!

No início do aprendizado de uma linguagem parece difícil, porém são apenas alguns detalhes sutis que praticando continuamente verá que não é tão complicado como imaginava.

Na sua classe Conta, haviam alguns probleminhas como: - os métodos depositar, sacar e atualizar... dentro do método getSaldo. - as classes ContaCorrente e ContaPoupanca estavam dentro da classe Conta e com os modificadores de acesso public o que não pode, pois, dentro de um arquivo .java, apenas uma classe pode ser public. - a solução é colocar as classes ContaCorrente e ContaPoupança no mesmo arquivo, mas fora da classe Conta. - faltavam alguns sinais aritméticos. Veja como ficou o arquivo da classe Conta.java.

package conta;

public class Conta { // inicio da classe Conta

    protected double saldo;

    public double getSaldo() { // metodos depositar, sacar, atualizar estavam dentro do getSaldo.
        return this.saldo = saldo;
    }

    public void depositar(double dinheiro){
            this.saldo += dinheiro;
    }

    public void sacar(double dinheiro){
        if (dinheiro > saldo) this.saldo -= dinheiro;
    }

    public void atualizar(double taxa){
        this.saldo += (saldo * taxa); }
} // fim da classe Conta

class ContaCorrente extends Conta { // inicio ContaCorrente

    public void atualiza(double taxa) {
        this.saldo += this.saldo * taxa * 2; // faltaram os sinais de multiplicacao (*)
    }
} // fim ContaCorrente

class ContaPoupanca extends Conta { // inicio ContaPoupanca
    public void atualiza(double taxa) {
        this.saldo += this.saldo * taxa * 3; // faltaram os sinais de multiplicacao (*)
    }

    public void deposita(double valor) {
        this.saldo += valor - 0.10;
    }
} // fim ContaPoupanca

E como o arquivo Conta.java estava errado... o erro foi levado para a sua classe TestarContas.java. }: - os imports das classes estavam errados - estava chamando o método deposita, no lugar de depositar Veja como ficou o arquivo da classe TestarContas.java

package conta;

import conta.ContaCorrente; // imports estavam invalidos.
import conta.ContaPoupanca; // imports estavam invalidos.

public class TestarContas {

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

        c.depositar(1000);
        cc.depositar(1000);
        cp.depositar(1000); // o nome estava deposita e não "depositar".

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

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

A entendi então assim sempre que eu for fazer uma herança devo declarar ela fora da outra classe ah pra mim eu pensava que se ela herdava ela ficava junto uma coisa os import eu nao entendi muito bem

Fico feliz que fui útil sobre o assunto de herança.

Quanto aos imports eles estão inclusos, porém, são opcionais. Uma vez que os dois arquivos Conta e TestarContas estão no mesmo pacote.

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