Sie sind auf Seite 1von 7

4.5.1.

mbito y tiempo de vida


de variables.
mbito de vida
El mbito de una variable u objeto es el espacio del programa en el que
esa variable existe. Por ello, se habla de mbito de vida

De forma general (hay excepciones que veremos ms adelante), la vida
de una variable comienza con su declaracin y termina en el bloque
en el que fue declarada (los bloques de cdigo se delimitan por llaves: {}).
Por ejemplo, cul es el mbito de la variable radio y del vector args?:
public static void main(String[] args)
{
double PI = 3.1416;
double radio = 3;
System.out.println( El rea es + (PI*radio*radio) );
}

Ms adelante profundizaremos en los diferentes tipos de mbito
Tipos de mbito
Ya vimos que el mbito de una variable u objeto es el espacio del
programa en el que esa variable existe. Por ello, se habla de mbito de
vida

Los principales tipos de mbitos son:
mbito de objeto. Los atributos de un objeto (que no son static) viven
en el espacio de vida del objeto y son accesibles por cualquier mtodo
del objeto (siempre que el mtodo no sea static). Por ello, a veces se
llaman variables de objeto o variables de instancia
mbito de mtodo. Variables y objetos declarados en un mtodo. Su
mbito de vida se cie al mtodo en el que fueron declaradas, por ello
a veces se llaman variables de mtodo o funcin
mbito de clase. Las variables static viven con independencia de que
hayamos hecho instancias de la clase. Podemos acceder a ellas (si
son pblicas) usando el nombre de la clase y viven desde que se
declara la clase, por ello se llaman variables de clase
Ambitos de objeto y de mtodo
En el ejemplo de los
crculos, hay
variables de objeto
como:
posicion
radio
Y variables de clase
(PI).
Tambin hay
variables de mtodo
(locales a la funcin):
package figuras.dominio;

public class Circulo {
private Punto posicion;
private double radio;
static final public double PI = 3.1416;

public Circulo() { }
public Circulo( double nuevoRadio, Punto nuevaPosicion ) {
setRadio( nuevoRadio );
setPosicion( nuevaPosicion );
}
public Circulo( double nuevoRadio, int posicionX, int posicionY ) {
setRadio( nuevoRadio );
posicion = new Punto( posicionX, posicionY );
}
public Circulo( Circulo circulo ) {
setRadio( circulo.getRadio() );
setPosicion( circulo.getPosicion());
}
public void setRadio( double radio ) { this.radio = radio; }
public void setPosicion( Punto posicion ) { this.posicion = posicion; }
public Punto getPosicion() { return posicion; }
public double getRadio() { return radio; }
public double getArea() { return radio * radio * PI; }
public String toString() {
return "Radio: " + radio + " Posicion: " + posicion.toString() +
" Area: " + getArea();
}
}

mbito de clase. static
Las variables static viven con independencia de que hayamos hecho instancias de la clase
Podemos acceder a ellas (si son pblicas) usando el nombre de la clase (no hay que hacer
instancias) y viven desde que se declara la clase, por ello se llaman variables de clase. Ejemplo:






Todas las instancias de la clase comparten la misma variable static. Cosa que no ocurre con
las variables no static, en estas cada objeto tiene su variable
En el ejemplo es lgico que el atributo PI sea static: el nmero PI es nico y el mismo sea cual
sea el crculo
Con los mtodos static ocurre algo semejante. Son accesibles desde la clase, sin necesidad
de hacer instancias. Ejemplo que convierte una cadena en un double:
String c = new String( 123.72 );
double r;
r = Double.parseDouble( c ); // Double es una clase, no un objeto
Ahora podemos explicarnos por qu main debe ser static: debe ser accesible por el interprete
Java antes de crear ningn objeto
Tienen restricciones: no pueden utilizar atributos de objeto (variables no static) ni pueden llamar a
mtodos de objeto (mtodos no static)
Por ello un mtodo static no puede usar la expresin this, ya que un mtodo static tiene mbito
de clase y this por definicin tiene mbito de objeto
class Circulo {
private punto posicion;
private double radio;
static public double PI = 3.1416;
...
public static void main(String[] args) {
System.out.println( circulo.PI);
}
final
Cuando se declara una variable como final estamos dando la orden de que
no se modifique. Es como definir una constante
Debe ser inicializada en la declaracin, ya que cualquier intento de
modificarla provoca un error de compilacin
Utilidad: no permitir que un error de programacin altere el valor de una
constante. Ejemplo:
class circulo {
private punto posicion;
private double radio;
static final public double PI = 3.1416;
El uso de final en mtodos tiene otro sentido: no permitir que una clase
hija sobreescriba un mtodo de la clase padre
www.proactiva-
calidad.com/java/.../Fun_Inf_04_Introducci
on1_Java.ppt

Das könnte Ihnen auch gefallen