Maison >Java >javaDidacticiel >Pourquoi est-ce que j'obtiens l'erreur Java « Impossible de faire une référence statique au champ non statique » ?
Erreur Java : "Impossible de faire une référence statique au champ non statique"
Cette erreur se produit lors de la tentative d'accès à un champ non statique. champ statique dans une méthode statique. En Java, les méthodes statiques appartiennent à la classe et ne peuvent accéder qu'aux variables statiques, tandis que les méthodes non statiques (méthodes d'instance) appartiennent à une instance de la classe et peuvent accéder à la fois aux variables statiques et non statiques.
Dans votre code, la méthode principale est statique et tente d'appeler les méthodes de retrait et de dépôt, qui ne sont pas statiques. L'erreur suggère que vous essayez de faire référence au champ de solde dans un contexte statique.
Résolution :
Pour résoudre ce problème, vous devez créer le les méthodes de retrait et de dépôt sont également statiques. Cependant, il n'est pas conseillé de modifier les méthodes d'origine car elles sont destinées à fonctionner sur des instances de compte spécifiques. Créez plutôt des versions surchargées de ces méthodes dans la méthode principale.
Voici le code mis à jour :
<code class="java">public class Account { // Static variables public static int id = 0; public static double annualInterestRate = 0; public static java.util.Date dateCreated; // Non-static variables private double balance = 0; public static void main(String[] args) { // Create an instance of Account Account account = new Account(1122, 20000, 4.5); // Overloaded methods (static) double newBalance = withdraw(account.balance, 2500); newBalance = deposit(newBalance, 3000); System.out.println("Balance is " + account.getBalance()); System.out.println("Monthly interest is " + (account.annualInterestRate / 12)); System.out.println("The account was created " + account.getDateCreated()); } // Overloaded methods public static double withdraw(double balance, double withdrawAmount) { balance -= withdrawAmount; return balance; } public static double deposit(double balance, double depositAmount) { balance += depositAmount; return balance; } }</code>
En créant des méthodes statiques surchargées, vous pouvez désormais accéder au champ de solde dans la méthode principale. . Ces méthodes surchargées prennent le solde actuel comme paramètre, effectuent les opérations et renvoient le solde mis à jour.
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!