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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 18:47:31458parcourir

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>

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>

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