7
respostas

F3 do contaPoupança.deposita() joga pro método normal deposita()

Quando uso o F3 no método deposita() referente à contaPoupanca ele vai para o método da classe Conta e não da classe ContaPoupanca, como sobrescrevi esse método achei que ele iria para a classe ContaPoupanca. Qual é o correto? Ele vai mesmo pra classe pai?

7 respostas

Oi Jaqueline, tudo bem? Quando tiver dúvidas relacionadas a código específico, cola ele aqui? Isso ajuda a gente a saber exatamente como está seu projeto e com base nele, poder responder sua dúvida da melhor forma.

package conta;

public class TestaConta {

    public static void main(String[] args) {

        Conta conta = new ContaCorrente();
        Conta contaCorrente = new ContaCorrente();
        Conta contaPoupanca = new ContaPoupanca();

        conta.deposita(1000);
        contaCorrente.deposita(1000);
        **contaPoupanca.deposita(1000);**

        AtualizadorDeConta atualizadorDeConta = new AtualizadorDeConta(0.01);

        atualizadorDeConta.roda(conta);
        atualizadorDeConta.roda(contaCorrente);
        atualizadorDeConta.roda(contaPoupanca);

        System.out.println("Saldo total: " + atualizadorDeConta.getSaltoTotal());

    }
}
package conta;

public abstract class Conta {

    protected double saldo;

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

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

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

    public void saca(double valor) {
        this.saldo -= valor;
    }

    public abstract void atualiza(double taxa);
}
package conta;

public class ContaPoupanca extends Conta {


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

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

O F3 nesse método contaPoupanca.deposita(1000); da classe TestaConta vai para o método da classe Conta e não para o da classe ContaPoupanca, isso está correto?

Opa Jaqueline, vai para o deposita da classe ContaPoupanca. Ele só iria para o método deposita da classe Conta se a classe ContaPoupanca não tivesse o método deposita.

Deu pra entender? Acho que ficou confuso.

Exatamente isso que achei, mas quando eu pressiono F3 ele vai para o da classe Conta e não o da classe ContaPoupanca, por isso achei estranho, pelo que eu entendo é pra ir pra ContaPoupanca.

Hm, Preciso testar isso pra ver o que está acontecendo. Pode ser que o Eclipse esteja considerando o método da classe pai, ela no caso será a implementação base das outras classes.

Tenho uma dúvida que, acredito eu, seja complementar a tua. Tem a ver com a criação do objeto referenciando tanto a Superclasse quanto a subclasse: Ex: Conta contaPoupanca = new ContaPoupanca() SUPER SUB

Tente declarar assim: ContaPoupanca contaPoupanca = new ContaPoupanca()


Meu tópico é "Funcionario A = new Gerente(); X Gerente B = new Gerente()". Se obtiver resposta compartilha comigo tb. https://cursos.alura.com.br/forum/topico-funcionario-a-new-gerente-x-gerente-b-new-gerente-55455

att

Cristiano, o Matheus já te respondeu lá, verifica por favor?