You are on page 1of 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


package figuras.dominio;

En el ejemplo de los crculos, hay variables de objeto como:


posicion radio

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(); } }

Y variables de clase (PI). Tambin hay variables de mtodo (locales a la funcin):

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:
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); }

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

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.proactivacalidad.com/java/.../Fun_Inf_04_Introducci on1_Java.ppt

You might also like