Maison > Java > javaDidacticiel > le corps du texte

Pourquoi est-ce que j'obtiens l'erreur « Impossible de faire une référence statique à un champ non statique » en Java ?

Linda Hamilton
Libérer: 2024-10-30 18:47:31
original
357 Les gens l'ont consulté

Why am I getting the

Éviter l'erreur « Impossible de créer une référence statique à un champ non statique »

Dans la programmation Java, le « Impossible de créer une référence statique à un champ non statique » "Une erreur de référence à un champ non statique" se produit lorsque vous essayez d'accéder à un champ non statique (également appelé variable d'instance) dans une méthode statique.

Dans le code fourni, l'erreur se produit car la méthode principale est déclaré comme statique, ce qui signifie qu'il ne peut faire référence qu'aux membres statiques de la classe, y compris les méthodes et les champs statiques. Cependant, les champs balance et annualInterestRate ne sont pas statiques, ce qui signifie qu'ils sont uniques à chaque instance de la classe Account.

Pour résoudre cette erreur, il est nécessaire de modifier le code pour suivre la syntaxe Java appropriée :

  • > Supprimer les références statiques aux champs non statiques :

    • Les références à balance et annualInterestRate dans la méthode principale doivent être supprimées car ce sont des variables d'instance accessibles via une référence d'objet (par exemple, account.getBalance (), account.getAnnualInterestRate())
  • > Créer des méthodes d'instance de méthodes non statiques :

    • Les méthodes de retrait et de dépôt doivent être déclarées comme non statiques, car elles doivent accéder au champ de solde via une référence d'objet. Cela leur permet de modifier le solde d'instances de compte spécifiques.

Code révisé pour la méthode principale :

<code class="java">public static void main(String[] args) {
    Account account = new Account(1122, 20000, 4.5);

    account.withdraw(2500);
    account.deposit(3000);
    System.out.println("Balance is " + account.getBalance());
    System.out.println("Monthly interest is " + account.getAnnualInterestRate() / 12);
    System.out.println("The account was created " + account.getDateCreated());
}</code>
Copier après la connexion

Code révisé pour les méthodes de retrait et de dépôt :

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

public void deposit(double depositAmount) {
    balance += depositAmount;
}</code>
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
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!