¿Cómo declara una clase variables globales?
Los métodos declarados como estáticos tienen las siguientes restricciones:
Sólo pueden llamar a otros métodos estáticos.
Sólo pueden acceder a datos estáticos.
No pueden hacer referencia a esto o super de ninguna manera (la palabra clave super está relacionada con la herencia y se describirá en el próximo capítulo).
Si necesita inicializar sus variables estáticas mediante cálculos, puede declarar un bloque estático que solo se ejecuta una vez cuando se carga la clase.
El siguiente ejemplo muestra una clase con métodos estáticos, algunas variables estáticas y un bloque de inicialización estático:
La categoría usa static {
static int a = 3 ;
Estático int b;
Método vacío estático (int x) {
sistema out . p>
sistema. println(" a = " a);
sistema. println(" b = " b ");
} p. >
static{
System.out.println("El bloque estático ha sido inicializado.");
b = a * 4;
}
Public static void main(String args[]) {
Metanfetamina(42);
}
}
p>
Una vez cargada la clase UseStatic, se ejecutarán todas las declaraciones estáticas. Primero configure A en 3, luego ejecute un bloque estático (imprima un mensaje) y finalmente inicialice B en a*4 o 12. Luego se llama a main(), main() llama a meth(), pasando el valor 42 a x, y las tres declaraciones println() se refieren a dos variables estáticas A y B, y a la variable local x.
Nota: Es ilegal hacer referencia a variables de instancia en un método estático.
El siguiente es el resultado del programa:
El bloque estático ha sido inicializado.
x = 42
a = 3
b = 12
Los métodos y variables estáticos se pueden utilizar independientemente de cualquier objeto. De esta manera, sólo necesitarás agregar un operador simbólico después del nombre de la clase. Por ejemplo, si desea llamar a un método estático desde fuera de una clase, puede utilizar el siguiente formato general:
nombreclase.método()
Aquí, nombreclase es el nombre de la clase en la que se define el método estático. Como puede ver, este formato es similar al formato de llamar a métodos no estáticos a través de variables de referencia de objetos. Se puede acceder a las variables estáticas en el mismo formato: el nombre de la clase seguido del operador de punto. Así es como Java implementa versiones controladas de funciones globales y variables globales.
Aquí tienes un ejemplo. En main(), se accede al método estático callme() y a la variable estática b fuera de sus clases.
Clase StaticDemo {
Static int a = 42
Static int b = 99
Static void callme() {
sistema . out . println(" a = " a);
}
}
Categoría StaticByName {
public static void main(String args[]) {
demostración estática. llámame();
system out.
}
}
El siguiente es el resultado del programa:
a = 42
b = 99
Las instancias creadas por su clase no pueden acceder a los miembros estáticos.
Si un miembro sin modificación estática es un miembro de objeto, es propiedad de todos los >miembros modificados con. static son miembros de la clase, es decir, pueden ser llamados directamente por la clase, que está disponible para todos los objetos
.