Maison >Java >javaDidacticiel >Pourquoi une méthode statique ne peut-elle pas accéder à un champ non statique en Java ?

Pourquoi une méthode statique ne peut-elle pas accéder à un champ non statique en Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 06:55:02949parcourir

Why Can't a Static Method Access a Non-Static Field in Java?

Référence de champ non statique à partir d'une méthode statique

En Java, une référence statique ne peut pas être faite à un champ ou une méthode non statique. En effet, contrairement aux champs et méthodes non statiques, les éléments statiques existent indépendamment d'une instance de la classe.

Considérez le code suivant :

public class NonStaticFieldReference {

    private float r; // Non-static field

    public static void main(String[] args) {
        System.out.println(r); // Error!
        c_area(); // Error!
    }

    private static void c_area() {
        // Cannot reference non-static field r from static method
    }
}

Dans cet exemple, le main( ) est statique, ce qui signifie qu’elle n’a pas accès au champ non statique « r ». De même, la méthode statique c_area() ne peut pas accéder au champ non statique 'r'.

Solution

Pour résoudre ce problème, créez une instance de la classe et accédez aux champs et méthodes non statiques via cette instance.

public class NonStaticFieldReference {

    private float r; // Non-static field

    public static void main(String[] args) {
        NonStaticFieldReference instance = new NonStaticFieldReference();
        instance.r = 5;
        instance.c_area();
    }

    private void c_area() {
        // Access non-static field r from non-static method
    }
}

De cette façon, le champ non statique 'r' est accessible via un objet de la classe, permettant une référence de champ appropriée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn