"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-07
Parcourir:221

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 » L'erreur "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 au solde et au taux d'intérêt annuel 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 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 :

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 révisé pour les méthodes de retrait et de dépôt :

public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}

public void deposit(double depositAmount) {
    balance  = depositAmount;
}
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3