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
Libérer: 2024-11-01 18:10:02
original
407 Les gens l'ont consulté

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>
Copier après la connexion

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!

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