Con la tecnología de Blogger.

Variables de instancia, variables de clase

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;
//....
}
Share on Google Plus

Sobre Rafa

Soy un apasionado de las nuevas técnologias, Internet, los videojuegos, la cultura japonesa y de USA.
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario

Gracias por comentar ;-)