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

Métodos Static

Pessoal, estou com uma dúvida quanto aos métodos estáticos, tenho a classe abaixo:

package br.com.bytebank.banco.test;

import br.com.bytebank.banco.modelo.ContaCorrente;
import br.com.bytebank.banco.modelo.ContaPoupanca;

//br.com.bytebank.banco.test.TesteContas
public class TesteContas {

    //java.lang.String
    public static void main(String[] args) {

        //Full Qualified Name - FQN
        ContaCorrente outra = null;
        //outra.deposita(200.0);

        ContaCorrente cc = new ContaCorrente(111, 222);
        cc.deposita(100.0);

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

        cc.transfere(10.0, cp);

        System.out.println("CC " + cc.getSaldo());
        System.out.println("CP " + cp.getSaldo());

        System.out.println(ContaPoupanca.getTotal());

    }
}

Este último sysout me retorna 2, como se estivessem sido instanciados dois objetos do tipo ContaPoupana, se eu instanciei apenas uma vez o a ContaPoupanca, o correto não seria me retornar apenas 1? Não entendi...

4 respostas

Olá Alexandre,

isso acontece porque quando vc cria as classes filhas elas chamam o construtor de suas classes-pai.

Como o totalizador está no construtor de Conta e toda CP e CC são Conta, consequentemente o totalizador de Conta será acionado.

Para exemplificar, coloque um sysout no construtor de Conta e verá o resultado. =)

Acho que entendi, como ambas as classes ContaCorrente e ContaPoupanca são Contas, ao colocar um sysout exibindo o total, ele mostra quantas vezes ambas as classes foram instanciadas, correto? Então se eu quisesse mostrar apenas quantas vezes cada classe foi instanciada eu deveria criar um método estático getTotal(); em cada uma delas correto? Pois não podemos sobrescrever métodos estáticos...

Acho que entendi, como ambas as classes ContaCorrente e ContaPoupanca são Contas, ao colocar um sysout exibindo o total, ele mostra quantas vezes ambas as classes foram instanciadas, correto? Então se eu quisesse mostrar apenas quantas vezes cada classe foi instanciada eu deveria criar um método estático getTotal(); em cada uma delas correto? Pois não podemos sobrescrever métodos estáticos...

solução!

Isso mesmo. =)

Caso este post tenha te ajudado, por favor, marcar como solucionado ✔. Bons estudos! ⌣