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
Libérer: 2024-10-31 06:55:02
original
921 Les gens l'ont consulté

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
    }
}
Copier après la connexion

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
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal