2.9 USO STATIC

 

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