Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

El codigo me devuelve la referencia en memoria del objeto y no los objetos.

import java.util.ArrayList;
import modelo.Cuenta;
import modelo.CuentaCorriente;

public class TestArrayList {
    public static void main(String[] args) {
        // <> forzando a que acepte solo 1 tipo de objeto
        ArrayList<Cuenta> lista = new ArrayList<Cuenta>();
        Cuenta cc1 = new CuentaCorriente(14,18);
        Cuenta cc2 = new CuentaCorriente(20,17);
        lista.add(cc1);
        lista.add(cc2);

        Cuenta obtenerCuenta = lista.get(0);
        System.out.println(obtenerCuenta);

        for (int i = 1; i < lista.size(); i++){
            System.out.println(lista.get(i));  
        }

        for (Cuenta cuenta : lista){ 
            System.out.println(cuenta);  
        } 

    }
}

El codigo me devuelve la referencia en memoria del objeto y no los objetos. Que hago mal?

Total de cuentas es 1
Estoy creando una cuenta18
Total de cuentas es 2
Estoy creando una cuenta17
modelo.CuentaCorriente@7ba4f24f
modelo.CuentaCorriente@3b9a45b3
modelo.CuentaCorriente@7ba4f24f
modelo.CuentaCorriente@3b9a45b3
3 respuestas
solución!

Franco saludo cordial. Mire usted, he copiado su código y me genera bien los datos Estoy creando una cuenta 18 Estoy creando una cuenta 17 CuentaCorriente, Numero: 18, Agencia: 14 CuentaCorriente, Numero: 17, Agencia: 20 CuentaCorriente, Numero: 18, Agencia: 14 CuentaCorriente, Numero: 17, Agencia: 20

Le coloco el código de CuentaCorriente para que lo compare con el suyo

package com.bytebank.modelo;

public class CuentaCorriente extends Cuenta {

    public CuentaCorriente( int agencia, int numero) {
        super(agencia, numero);
    }

    @Override
    public void saca(double valor) {
        double comision = 0.2;
        try {
            super.saca(valor + comision);
        } catch (SaldoInsuficienteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    public void deposita(double valor) {
        // TODO Auto-generated method stub

    }

    @Override
    public String toString() {
        return "CuentaCorriente, " + super.toString();
    }

}

¡Hola Franco! ¡Deseo que estés bien!

Eso es correcto, Tu ArrayList solo guardará las referencias de tus objetos! En caso que tu quieras mostrar algun dato que esta dentro de tu objeto, deberas utilizar los metodos que creaste en tu clase Cuenta o especificamente los metodos que tienes en tu clase CuentaCorriente, como por ejemplo: getNumero() ogetSaldo(), todo va a depender de los metodos que has creado para poder visualizar los datos que estan dentro del tipo de objeto que estas instanciando. es decir, te voy a dejar un corto ejemplo:

//Este es tu for que solo muestra las referencias de objetos
for (Cuenta cuenta : lista){ 
            System.out.println(cuenta);  
        }

Para mostrar lo que hay dentro del objeto deberia ser algo asÍ:

for (Cuenta cuenta : lista){ 
            System.out.println(cuenta.getNumero());  
             System.out.println(cuenta.getSaldo());
        }

¡Te deseo mucho éxito en tus estudios! y recuerda que aquí estaremos para apoyarte!

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

Por eso LUZDALIS JOSEFINA LOPEZ DE ROMERO está en Alura, excelente, aprendimos mucho mas