¿Cómo comprobar la accesibilidad de las variables estáticas y no estáticas mediante un método estático?

La palabra clave estática es un modificador sin acceso en Java que se puede usar para variables, métodos y bloques de código. Las variables estáticas en Java pertenecen a la clase, es decir, se inicializa solo una vez al comienzo de la ejecución. Al usar variables estáticas, se comparte una sola copia entre todas las instancias de la clase, y se puede acceder a ellas directamente por el nombre de la clase y no requieren ninguna instancia. El método Static pertenece de manera similar a la clase y no a la instancia y puede acceder solo a variables estáticas pero no a variables no estáticas. 

Ejemplo 1: los métodos estáticos pueden acceder a variables estáticas.

Java

// Java program to check accessibility
// of static variables inside
// static methods
 
class GFG {
 
    // declaring variable 'a' as static
    static int a = 5;
 
    // main is also a static type
    public static void main(String args[])
    {
 
        // accessing value of
        // static variable
        System.out.println("Static variable:" + a);
    }
}
Producción

Static variable:5

Ejemplo 2: No podemos acceder a variables no estáticas dentro de un método estático.

Java

// Java program to check accessibility
// of non - static variables inside
// static methods
 
class GFG {
 
    // declaring variable 'a' as non - static
    int a = 5;
 
    // main is also a static type
    public static void main(String args[])
    {
 
        // accessing value of
        // non - static variable
        System.out.println("Non - Static variable:" + a);
    }
}

Producción

prog.java:16: error: non-static variable a cannot be referenced from a static context
    System.out.println("Non - Static variable:" + a);
                                                  ^
1 error

Ejemplo 3: 

Java

// Java Program to demonstrate the accessibility
// of static and non-static variables
// by static method
 
class Student {
 
    // initialized to zero
    int a;
 
    // initialized to zero when class is loaded
    // but not for each object created.
    static int b;
 
    // Constructor
    Student()
    {
 
        // incrementing static variable b
        b++;
    }
 
    // method for printing
    public void printData()
    {
        System.out.println("Value of a = " + a);
        System.out.println("Value of b = " + b);
    }
 
    /*public static void increment(){
     a++;
    }*/
}
 
// Driver class
class GFG {
 
    // main is a static block
    public static void main(String args[])
    {
 
        // creating instance
        Student s1 = new Student();
 
        s1.printData();
 
        // directly accessing variable 'b'
        // by class name because it is static
        Student.b++;
 
        s1.printData();
    }
}
Producción

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2

En el programa anterior, si eliminamos los comentarios del método de incremento, se generará un error porque el método de incremento es estático y la variable a no es estática y ya sabemos que los métodos estáticos no pueden acceder a variables no estáticas.

Publicación traducida automáticamente

Artículo escrito por dadimadhav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *