0

Java paso a paso: Capítulo 4º – Variables y métodos estáticos y finales

Antes de entrar más en profundidad voy hacer mención especial a las variables de clases, en concreto, las variables estáticas y finales, un concepto un tanto ambiguo que si no se realiza a través de un ejemplo no se llegará a entender lo suficientemente bien.

 

Las variables o métodos estáticos en primera instancia pueden ser usados sin la necesidad de crear un nuevo objeto, leyendo esto más de uno se preguntará el por qué usarlas si estamos hablando de un lenguaje dónde su primordial uso es ser orientado a objetos, muy simple, estos métodos o variables aparte de no tener la necesidad de crear un objeto, también son meramente usados como un elemento del cual comparte todos los objetos que parten de esa misma clase de forma común el cual puede ser alterado esa variable o método de forma que quede reflejado en todos los objetos de esa clase, parece un poco complejo pero procederé con un ejemplo como previamente dije para explicar mejor este concepto:

 

Imaginemos que tenemos una clase arbitraria en el cual queremos tener un control del número de objetos que se crean en tiempo de ejecución, deberíamos definir una variable estática contador que vaya incrementándose a la par que vamos creando los objetos:

 

public class EjemploStatic{

private static int n_instancias;

public EjemploStatic()

{n_instancias++;}

public String toString()

{return "nº de instancias: "+this.n_instancias;}

}

 

Ahora procederemos a crear nuestra clase Test para probar la clase:

 

public class Test{

public static void main(String[] args){

EjemploStatic obj1 = new EjemploStatic();

System.out.println(obj1);

EjemploStatic obj2 = new EjemploStatic();

System.out.println(obj2);

EjemploStatic obj3 = new EjemploStatic();

System.out.println(obj3);}

}

 

Si todo ha ido bien y el código no nos deja por mentirosos la salida que ha de mostrar es la siguiente:

 

nº de instancias: 1

nº de instancias: 2

nº de instancias: 3

 

El uso puede resultar parecido al uso de variables globales que son comunes a todo el comportamiento de una clase en general pero es un grave error atribuir este símil ya que mientras no se defina como estático el comportamiento solamente será genera y única a cada una de las instancias que se haga de esa clase de igual forma y si hasta ahora os habéis fijado, el método main del cual parten todos los programas está declarado como un método estático ya que no tendría sentido crear un objeto del mismo main para acceder a su método para ejecutar el código del programa aparte de que esto daría un error ya que el programa necesita partir siempre desde un método main para ejecutar el código que le sucede y esto sólo puede hacerse a través de un método estático.

 

Las variables finales al contrario que las estáticas son inalterables y comunes para todos los objetos de la misma clase, es lo que definiríamos como constante, un ejemplo breve sería lo siguiente:

 

public class Circulo{

private final static double pi=3.1415;

public static double area(double radio)

{return pi*(radio*radio);}

}

 

Como vemos definimos como constante el número pi para hallar el área del círculo, una apreciación que podemos observar y que sirve como ejemplo análogo a lo anterior dicho es el método static, definido de esta forma en nuestro main no haría falta crear un objeto de la clase y la llamada quedaría definida así:

 

public class Test{

public static void main(String[] args){

double radio = 5.0;

System.out.println(Circulo.area(radio));}

}

 

Que imprimiría por pantalla el valor del área, este ejemplo se puede comparar a clases como Math el cual para realizar una operación como puede ser la raíz cuadrada de un número no haría falta crear una instancia de la clase si no hacer una llamada a un método estático en este caso sería Math.sqrt(número)

 

Hasta aquí la definición de variables y métodos estáticos y finals, en el siguiente capítulo entraremos en profundidad con los conceptos de Herencias.

Tone

Ingeniero del Software y procrastinador sin remedio, interesado en todo lo que tenga que ver con el mundo del desarrollo web y la inteligencia artificial, no sé si seré el responsable de la creación de Skynet algún día pero se intenta.

ESCRIBIR UN COMENTARIO
  • (will not be published)

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>