Maison >Java >javaDidacticiel >Pourquoi ne puis-je pas accéder à un champ non statique à partir d'une méthode statique en Java ?
Référence de champ non statique dans un contexte statique
En Java, les méthodes statiques ne peuvent pas accéder directement aux champs non statiques. Cette erreur se produit généralement lors de la tentative d'accès à une variable d'instance à partir d'une méthode statique.
Comprendre le problème
Dans le code donné, l'erreur se produit dans la méthode principale :
<code class="java">Account account = new Account(1122, 20000, 4.5); account.withdraw(balance, 2500);</code>
Ici, la méthode Remove() est statique, mais elle tente d'accéder à la balance du champ non statique. Puisque la méthode principale est statique, elle ne peut pas faire référence à des variables d'instance comme balance.
Solution
Pour résoudre cette erreur, rendez la méthode non statique ou le champ static.
Option 1 : Rendre la méthode de retrait non statique
Changez la méthode retirée() en :
<code class="java">public void withdraw(double withdrawAmount) { balance -= withdrawAmount; }</code>
Maintenant, le La méthode peut accéder au champ de solde car il est non statique.
Option 2 : Rendre le champ de solde statique
Vous pouvez également rendre le champ de solde statique :
<code class="java">private static double balance = 0;</code>
Désormais, le champ solde est accessible à partir de contextes statiques comme la méthode main :
<code class="java">Account account = new Account(1122, 20000, 4.5); account.withdraw(balance, 2500);</code>
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!