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
Libérer: 2024-10-30 16:33:26
original
1025 Les gens l'ont consulté

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

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

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

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

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal