Diseño natural, usable, seguro, accesible
© Carlos D. González - Update: Feb - 2012
Contacto: usabilidadweb @ usabilidadweb.com.ar
En el ejemplo, declarando PI estático (static), la variable PI queda vinculada a la clase Circle, y se reserva espacio en memoria sólo una vez. Si además la variable PI no cambia, es una constante, le podemos anteponer el término final.
| ![]()
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 Argentina License |
Para indicar que el miembro PI es una variable de clase se le antepone el modificador static. El modificador final indica que es una constante que no se puede modificar, una vez que la variable PI ha sido inicializada.
public class Circle {
static final double PI = 3.1416;
double radio;
Circle(double radio){
this.radio = radio;
}
double calcularArea(){
return (PI*radio*radio);
}
}
Java tiene tres tipos de variables:
Las variables de instancia o miembros dato, se usan para guardar los atributos de un objeto particular.
Las variables de clase son similares a las variables de instancia, con la excepción de que los valores que guardan son los mismos para todos los objetos de una determinada clase. En el ejemplo, PI es una variable de clase y radio es una variable de instancia. PI guarda el mismo valor para todos los objetos de la clase Circle, pero el radio de cada círculo puede ser distinto
class Circle{
static final double PI = 3.1416;
// Tiene un valor fijo en todos los objetos instanciados
double radio;
// Puede tomar distintos valores en distintos objetos
// continua el programa
}
Para calcular el área de un círculo, se crea un objeto circulo de la clase Circle dando un valor al radio. Desde este objeto llamamos a la función miembro calcularArea.
Circle circulo = new Circle(2.3);
System.out.println("área: "+Circle.calcularArea());
Las ventajas que supone declarar la constante PI como miembro estático:
| Objetos | Objetos | Objetos | Clase |
|---|---|---|---|
| Circulo 1 | Circulo 2 | Circulo 3 | NO |
| radio + PI | radio + PI | radio + PI | NO |
| radio | radio | radio | PI |
Instanciamos tres objetos de la clase Circle, con valor de radios 6.4, 4.0, y 3.6
Circle circulo1 = new Circle(6.4);
Circle circulo2 = new Circle(4.0);
Circle circulo3 = new Circle(3.6);
Al crearse cada objeto se reservaría espacio para el dato radio (64 bits), y para el dato PI (otros 64 bits). Se observa en la tabla que se guarda 3 veces el mismo dato PI.
public class Circle{
static double PI = 3.1416;
double radio;
// Continúa el programa
}
Declarando PI estático (static), la variable PI queda ligada a la clase Circle, y se reserva espacio en memoria una sóla vez, tal como se indica en la tabla. Si además la variable PI no cambia, es una constante, le podemos anteponer la palabra final.
public class Circle{
static final double PI = 3.1416;
double radio;
// Continúa el programa
}
En resúmen: Si la constante está calificada con final y con static, sólo existirá una copia de la constante para todos los objetos instanciados de esa clase (Circle).
Si no se declara static, cada objeto tendrá su propia copia de la constante, este método no resulta muy interesante ya que se trata de la misma constante y generaría un consumo de memoria innecesario.
Stds W3C, PHP, MySQL, PostgreSQL, SQLite ...
Desarrollo de software basado en web
Desarrollo de software en C++, JAVA y PYTHON
Consultor independiente: Usabilidad, AI, y Estándares web W3C
Cursos en Buenos Aires, Argentina
http://www.usabilidadweb.com.ar/