En este post vamos
a ver un nuevo concepto, la palabra static
se puede emplear tanto para variables, constantes y métodos. Para ver el uso de
static vamos a utiliza el ejemplo
anterior, esta vez vamos a añadir un número de identificación a cada
trabajador, declaramos una variable de tipo entero llamada Id:
private int Id;
La inicializamos en
el constructor:
public Trabajador(String nom, int Id) {
nombre = nom;
seccion = "Administracion";
this.Id = Id;
}
La añadimos en el
método:
public String devolverDatos() {
return "El nombre del empleado es:
"+nombre+" la sección es "+seccion+ " y el Id es "+Id;
}
En el método main tenemos que pasar como parámetro el
número de identificación:
Trabajador
trabajador1 = new Trabajador("Noelia Campos", 1);
Trabajador trabajador2 = new Trabajador("Juan
Diaz", 2);
Si probamos:
No obstante, esto
puede llegar a ser un problema, porque solo tenemos dos trabajadores pero si hubiera
300 el repetir Id o equivocarse en uno de ellos sería muy fácil.
Aquí es donde entra
en juego la palabra static. Hasta
ahora las variables que hemos declarado:
Son copias de los
objetos que creamos:
Es decir, la
sección es una copia del trabajador1 y también es una copia del trabajador2. Lo
que necesitamos en el caso de Id es
una variable que no sea una copia, sino, que sea única, que los objetos la
compartan, para compartir la variable Id hay que declararla como static:
public static int
Id;
En el constructor:
public Trabajador(String nom) {
nombre = nom;
seccion = "Administracion";
Id = 1;
}
En el método main tenemos que incrementar esta
variable, creamos un objeto más:
public static void main(String[] args) {
Trabajador trabajador1 = new Trabajador("Noelia Campos");
Trabajador trabajador2 = new Trabajador("Juan Diaz");
Trabajador trabajador3 = new Trabajador("Antonio Morales");
trabajador1.cambiar_Seccion("RRHH");
System.out.println(trabajador1.devolverDatos());
Trabajador.Id++;
System.out.println(trabajador2.devolverDatos());
Trabajador.Id++;
System.out.println(trabajador2.devolverDatos());
}
Si probamos:
Sin embargo,
estamos como antes, tenemos que ir añadiendo el incremento de la variable. Lo
que queremos es despreocuparnos de introducir el Id que lo haga el programa
solo. Por lo que vamos a modificar la variable estática y vamos a crear otra:
private int Id;
private
static int IdSiguiente=1;
En el constructor
la variable Id va a ser igual a la variable estática y ésta última se va a
incrementar:
public Trabajador(String nom) {
nombre = nom;
seccion = "Administracion";
Id = IdSiguiente;
IdSiguiente++;
}
Vamos al método main:
public static void main(String[] args) {
Trabajador trabajador1 = new Trabajador("Noelia Campos");
Trabajador trabajador2 = new Trabajador("Juan Diaz");
Trabajador trabajador3 = new Trabajador("Antonio Morales");
trabajador1.cambiar_Seccion("RRHH");
System.out.println(trabajador1.devolverDatos());
System.out.println(trabajador2.devolverDatos());
System.out.println(trabajador3.devolverDatos());
}
Si probamos ahora:
No hay comentarios:
Publicar un comentario