首页  >  文章  >  Java  >  为什么我收到 Java 错误“无法对非静态字段进行静态引用”?

为什么我收到 Java 错误“无法对非静态字段进行静态引用”?

Susan Sarandon
Susan Sarandon原创
2024-11-01 18:10:02275浏览

Why am I getting the Java error

Java 错误:“无法对非静态字段进行静态引用”

尝试访问非静态字段时会出现此错误静态方法中的静态字段。在Java中,静态方法属于类,只能访问静态变量,而非静态方法(实例方法)属于类的实例,既可以访问静态变量,也可以访问非静态变量。

中在您的代码中,主方法是静态的,它尝试调用非静态的提款和存款方法。该错误表明您正在尝试从静态上下文中引用余额字段。

解决方案:

要解决此问题,您需要使取款和存款方法也是静态的。但是,不建议修改原始方法,因为它们旨在对特定帐户实例进行操作。相反,请在主方法中创建这些方法的重载版本。

以下是更新后的代码:

<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>

通过创建静态重载方法,您现在可以在主方法中访问余额字段。这些重载方法以当前余额为参数,执行操作,并返回更新后的余额。

以上是为什么我收到 Java 错误“无法对非静态字段进行静态引用”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn