Maison  >  Article  >  Java  >  Pourquoi ne puis-je pas accéder à un champ non statique à partir d'une méthode statique ?

Pourquoi ne puis-je pas accéder à un champ non statique à partir d'une méthode statique ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 04:38:02451parcourir

Why Can't I Access a Non-Static Field from a Static Method?

Référencement de champs non statiques à partir de méthodes statiques

Lorsque vous rencontrez l'erreur « Impossible de faire une référence statique au champ non statique », il est essentiel de comprendre la distinction entre les champs et méthodes statiques et non statiques.

Les champs et méthodes statiques sont des attributs et des fonctions au niveau de la classe qui ne sont associés à aucune instance d'objet spécifique. À l'inverse, les champs et méthodes non statiques sont spécifiques à une instance et n'ont de sens que dans le contexte d'une instance de la classe.

Dans le contexte du code fourni, la méthode principale marquée comme statique tente d'accéder au équilibre de champ non statique. Toutefois, cela n'est pas autorisé, car les méthodes statiques ne peuvent pas référencer directement des champs non statiques. La raison en est que les méthodes statiques n'ont pas de référence implicite à une instance particulière de la classe.

Pour résoudre ce problème, vous pouvez soit rendre la méthode principale non statique (en supprimant le mot-clé "static" de son déclaration) ou modifiez les méthodes de retrait et de dépôt pour utiliser l'accès au niveau de l'instance au champ de solde. Par exemple :

<code class="java">public Account() {
    // ...
    balance = 20000;
}

public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}</code>

Vous pouvez également définir des méthodes statiques pour effectuer les opérations de retrait et de dépôt si vous le souhaitez.

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