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

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 18:10:02408parcourir

Why am I getting the Java error

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!

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