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

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

DDD
DDDoriginal
2024-10-30 16:33:26994parcourir

Why Can't I Access a Non-Static Field from a Static Method in 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!

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