Así es Karlos, se puede usar cómo dices, usándola cómo variable global entre objetos de la misma clase. Básicamente se comparte la misma zona de memoria en las diferentes instancias. Se puede usar también cómo contador o para impedir que un objeto sea instanciado mediante una bandera estática por ejemplo. Luego podemos encontrarnos también métodos o funciones estáticos que van encaminados a trabajar con datos estáticos, ejemplo de ésto es el método println o las funciones de la clase Math.
Ejemplo:
| Código: | /*
* Copyright (C) 2007 The Android Open Source Project
*/
package com.example.android.helloactivity;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class estatica {
static int st;
// constructor
estatica()
{
st=1;
}
}
/**
* A minimal "Hello, World!" application.
*/
public class HelloActivity extends Activity {
estatica primero, segundo;
public HelloActivity() {
}
/**
* Called with the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
primero=new estatica();// st, la variable estatica comienza con valor 1
segundo=new estatica();
segundo.st=3;
TextView tv = new TextView(this);
tv.setText("El valor de st es igual a: "+Integer.toString(primero.st));
setContentView(tv);
}
}
|
Si te fijas en el ejemplo, hemos creado una clase llamada estatica que posee un miembro estático, st, cuando creamos un objeto se asigna a st el valor de uno. En el ejemplo se crean dos objetos de la misma clase, mientras que el primer objeto muestra el valor de la variable st, el segundo objeto modifica el valor de st. Que en otro caso, debería mostrar st con el valor de uno o el que tuviera en su defecto, pero no es así cuando se trata de un static. |