clases hijas que al ser instanciadas tienen el mismo valor del atributo estatico del padre(clase abstracta)
Esto de crear clases hijas sin obtener un nuevo valor para el atributo privado estatico "saldo" en cada instancia , me pueden decir porque es valido esto? yo trate de simular el dinero disponible que posee un cajero y me sale que esta bien pero exijo explicaciones
Esto de crear clases hijas sin obtener un nuevo valor para el atributo privado estatico "saldo" en cada instancia , me pueden decir porque es valido esto? yo trate de simular el dinero disponible que posee un cajero y me sale que esta bien pero exijo explicaciones
Código (java) [Seleccionar]
package padre;
import java.util.Scanner;
/**
*
* @author Ana Keldysh, Vanessa Navarro
*/
public abstract class Cajero {
protected int transaccion, retiro, deposito, disponible = 500;
private static int saldo = 900; //Este valor siempre esta en cada instancia de una clase hija "Cliente", pero no toma el valor 900 sino el ultimo valor modificado o no
Scanner entrada = new Scanner(System.in);
public void operaciones() {
int opcion = 0;
do {
System.out.println("Elija una opción");
System.out.println("1. Consultar saldo");
System.out.println("2. Extraer dinero");
System.out.println("3. Depositar dinero");
System.out.println("4. Salir");
opcion = entrada.nextInt();
switch (opcion) {
case 1:
System.out.println("Saldo disponible: $" + disponible);
break;
case 2:
extraer();
transaccion(false, retiro);
break;
case 3:
depositar();
transaccion(true, deposito);
break;
case 4:
System.out.println("Gracias! Vuelva pronto" + Cajero.getSaldo());
break;
default:
System.out.println("Opcion incorrecta, intente nuevamente");
}
} while (opcion != 4);
}
public abstract void transaccion(boolean depositar, int dinero);
//Método para extraer dinero
public void extraer() {
retiro = entrada.nextInt();
}
//Método para depositar dinero
public void depositar() {
deposito = entrada.nextInt();
}
public static int getSaldo() {
return saldo;
}
public static void setSaldo(int aSaldo) {
saldo = aSaldo;
}
}
Código (java) [Seleccionar]
package hijo;
/**
*
* @author Ana Keldysh, Vanessa Navarro
*/
public class Cliente extends Cajero {
@Override
public void transaccion(boolean depositar, int dinero) {
if (depositar) {
disponible += dinero;
Cajero.setSaldo(Cajero.getSaldo() + dinero);
} else {
if (dinero > disponible) {
System.out.println("Saldo insuficiente");
} else if (dinero > Cajero.getSaldo()) {
System.out.println("Lo sentimos, la transacción no puede llevarse acabo");
} else {
disponible -= dinero;
Cajero.setSaldo(Cajero.getSaldo() - dinero);
}
}
}
}