You are on page 1of 3

WebZIP News

Upgrade
Don't Show Ads

Variables y Constantes
Anterior | Siguiente

Variables Miembro
Una clase en Java puede contener variables y mtodos. Las variables pueden ser tipos primitivos como int, char, etc.
Los mtodos son funciones.

Por ejemplo, en el siguiente trozo de cdigo podemos observarlo:

public class MiClase {


int i;

public MiClase() {
i = 10;
}
public void Suma_a_i( int j ) {
int suma;
suma = i + j;
}
}

La clase MiClase contiene una variable (i) y dos mtodos, MiClase() que es el constructor de la clase y Suma_a_i(
int j ).

La declaracin de una variable miembro aparece dentro del cuerpo de la clase, pero fuera del cuerpo de cualquier
mtodo de esa clase. Si se declara dentro de un mtodos, ser una variable local del mtodo y no una variable
miembro de la clase. En el ejemplo anterior,i es una variable miembro de la clase y suma es una variable local del
mtodo Suma_ a_i().

El tipo de una variable determina losvalores que se le pueden asignar y las operaciones que se pueden realizar con
ella.

El nombre de una variable ha de ser unidenticador vlido en Java. Por convenio, los programadores Java empiezan
los nombres de variables con una letra minscula, pero no es imprescindible. Los nombres de las variables han de ser
nicos dentro de la clase y se permite que haya variables y mtodos con el mismo nombre, a diferencia de C++, en
donde se produce un error de compilacin sise da este caso.

Para los programadores C++, se pueden sealaralgunas diferencias entre Java y C++ respecto a la sintaxis e
interpretacin en la declaracin de variables miembro de una clase, como son:

En los dos lenguajes se permite la declaracin de variables miembro estticas con unasintaxis parecida,
aunque en C++, se debenredeclarar estas variables fuera de la denicin de la clase utilizando el nombre de la
clase, el nombre de la variable y el operador de mbito
En los dos lenguajes se permite la utilizacin de modicadores de acceso a las variables miembro utilizando
las palabras clave public, private y protected, aunque la sintaxis e interpretacin son diferentes en los dos
lenguajes
Los dos lenguajes reconocen la palabra clave volatile, aunque Java la ignora
C++ no reconoce las palabras clave transient y final, utilizadas en la declaracin de variables miembro en
Java
Aparte de las diferencias de sintaxis anteriores, Java permite la inicializacin de variables miembro de tipos primitivos
en el momento de la declaracin y esto no es posible en C++.

La sintaxis completa de la declaracin de una variable miembro de una clase en Java sera:

[especificador_de_acceso][static][final][transient][volatile]
tipo nombreVariable [= valor_inicial];

Ambito de una Variable


Los bloques de sentencias compuestas en Ja va se delimitan con dos llaves. Las variables de Java slo son vlidas
desde el punto donde estn declaradas hasta el nal de la sentencia compuesta que la engloba. Se pueden anidar
estas sentencias compuestas, y cada una puede contener su pr opio conjunto de declaraciones de variables locales.
Sin embargo, no se puede declarar una variable con el mismo nombre que una de mbito exterior.

El siguiente ejemplo intenta declarar dos variables separadas con el mismo nombre. En C y C++ son distintas, porque
estn declaradas dentro de mbitos diferentes. En Java, esto es ilegal.

class Ambito {
int i = 1; // mbito exterior
{ // crea un nuevo mbito
int i = 2; // error de compilacin
}
}

Variables de Instancia
La declaracin de una variable miembro dentro de la denicin de una clase sin anteponerle la palabr a clave static,
hace que sea una variable de instancia en todos los objetos de la clase. El signicado devariable de instancia sera,
ms o menos, que cualquier objeto instanciado de esa clase contiene su propia copia de toda variable de instancia. Si
se examinara la zona de memoria reservada a cada objeto de la clase, se encontrara la reserva realizada para todas
las variables de instancia de la clase. En otras palabras, como un objeto es una instancia deuna clase, y como cada
objeto tiene su propia copia de un dato miembro particular de la clase, entonces se puede denominar a ese dato
miembro como variable de instancia.

En Java, se accede a las variables de instanciaasociadas a un objeto determinado utilizandoel nombre del objeto, el
operador punto (.) y el nombre de la variable:

miObjeto.miVariableDeInstancia;

En C++, se puede acceder a las variables de instancia de un objeto a travs de la misma sintaxis, pero tambin
utilizando el operador echa (->), que utiliza como origen una variable puntero que apunta al objeto:

miVariablePuntero->miVariableDeInstancia;

Variables Estticas
La declaracin de un dato miembro de una clase usando static, crea una variable de clase o variable esttica de la
clase. El signicado de variable esttica es que todas las instancias de la clase (todos los objetos instanciados de la
clase) contienen la mismas variables de clase o estticas. Enotras palabras, en un momento determinado se puede
querer crear una clase en la que elvalor de una variable de instancia sea el mismo (y de hecho sea la misma ariable)
v
para todos los objetos instanciados a partir de esa clase. Es decir, que exista una nicacopia de la variable de
instancia, entonces es cuando debe usarse lapalabra clave static.

class Documento extends Pagina {


static int version = 10;
}

El valor de la variable version ser el mismo para cualquier objeto instanciado de la clase Documento. Siempre que un
objeto instanciado de Documento cambie la variable version, sta cambiar para todos los objetos.
En C++, es necesario redeclarar todas las variables estticas fuera de la denicin de la clase, produciendo una
variable pseudo-global, es decir, una variable que es global en lo quea los objetos de esa clase se reere.

Si se examinara en este caso la zona de memoria reservada por el sistema para cada objeto, se encontrara con que
todos los objetos comparten la misma zona de memoria para cada una de las variables estticas, por ello se llaman
tambin variables de clase, porque son comunes a la clase, a o
t dos los objetos instanciados de la clase.

Tanto en Java como en C++, se puede acceder alas variables de clase utilizando el nombre de la clase y el nombre de
la variable, no es necesario instanciar ningn objeto de la clase para acceder a las variables de clase.

En C++, a las variables de clase se accedeutilizando el operador de mbito junto con el nombre de la clase y el nombre
de la variable:

miVariable::miVariableDeClase;

En Java, a las variables de clase se accedeutilizando el nombre de la clase, el nombre de la variable y el operador
punto (.). La siguiente lnea de cdigo, ya archivista, se utiliza para acceder a la variable out de la clase System. En el
proceso, se accede al mtodo println() de la variable de clase que presenta una cadena en el dispositivo estndar de
salida.

System.out.println( "Hola, Mundo" );

Es importante recordar que todos los objetos de la clase comparten las misma variables de clase, porque si alguno de
ellos modica algunade esas variables de clase, quedarn modicadas para todos los objetos de la clase. Esto puede
utilizarse como una forma de comunicacin entr e objetos.

Constantes
En Java, se utiliza la palabra clave final para indicar que una variable debe comportarse como si fueseconstante,
signicando con esto que no se permite su modicacin una vez que haya sido declarada e inicializada.

Como es una constante, se le ha de proporcionar un valor en el momento en que se declare, por ejemplo:

class Elipse {
final float PI = 3.14159;
. . .
}

Si se intenta modicar el valor de una variable nal desde el cdigo de la aplicacin, se generar un error de
compilacin.

Si se usa la palabra clave final con una variable o clase esttica, se pueden crear constantes de clase,haciendo de
esto modo un uso altamente eciente de la memoria, porque no se necesitaran mltiples copias de las constantes.

La palabra clave final tambin se puede aplicar amtodos, signicando en este caso que los mtodos no pueden
ser sobreescritos.

Home | Anterior | Siguiente | Indice | Correo

You might also like