Ya mencionamos la diferencia entre variables de instancia, de clase y locales. Consideremos de nuevo la clase Circulo, con dos miembros dato, el radio específico para cada círculo y el número PI que tiene el mismo valor para todos los círculos. La primera es una variable de instancia y la segunda es una variable de clase.
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.
Definimos también una función miembro denominada calcularArea que devuelva el área del círculo
public class Circulo{
static final double PI=3.1416;
double radio;
public Circulo(double radio){
this.radio=radio;
}
double calcularArea(){
return (PI*radio*radio);
}
}
Para calcular el área de un círculo, creamos un objeto circulo de la clase Circulo dando un valor al radio.
Desde este objeto llamamos a la función miembro calcularArea.
Circulo circulo=new Circulo(2.3);
System.out.println("área: "+circulo.calcularArea());
Veamos ahora las ventajas que supone declarar la constante PI como miembro estático.
Si PI y radio fuesen variables de instancia
public class Circulo{
double PI=3.1416;
double radio;
//....
}
Creamos tres objetos de la clase Circulo, de radios 3.2, 7.0, y 5.4
Circulo circulo1=new Circulo(3.2);
Circulo circulo2=new Circulo(7.0);
Circulo circulo3=new Circulo(5.4);
Al crearse cada objeto se reservaría espacio para el dato radio (64 bits), y para el dato PI (otros 64 bits).
Véase la sección tipos de datos primitivos. Como vemos en la parte superior de la figura, se desperdicia la memoria del ordenador, guardando tres veces el mismo dato PI.
public class Circulo{
static double PI=3.1416;
double radio;
//....
}
Declarando PI estático (static), la variable PI queda ligada a la clase Circulo, y se reserva espacio en
memoria una sóla vez, tal como se indica en la parte inferior de la figura. Si además la variable PI no
cambia, es una constante, le podemos anteponer la palabra final.
public class Circulo{
static final double PI=3.1416;
double radio;
//....
}
- Blogger Comment
- Facebook Comment
Suscribirse a:
Enviar comentarios
(
Atom
)
0 comentarios:
Publicar un comentario
Gracias por comentar ;-)