Home > Java > javaTutorial > body text

Why Does Java Throw an Error When Making a Static Reference to a Non-Static Field?

DDD
Release: 2024-11-01 11:23:25
Original
957 people have browsed it

Why Does Java Throw an Error When Making a Static Reference to a Non-Static Field?

Static Reference to Non-Static Field

In Java, a static reference to a non-static field can be a source of errors. Let's delve into a specific example to understand and resolve this issue.

Consider the following code:

<code class="java">public class Account {

    private int id = 0;
    private double balance = 0;

    public static void main(String[] args) {
        Account account = new Account(1122, 20000);
        account.withdraw(balance, 2500);
    }

    public void withdraw(double withdrawAmount) {
        balance -= withdrawAmount;
    }
}</code>
Copy after login

When attempting to compile this code, we encounter the following error:

Cannot make a static reference to the non-static field balance
Copy after login

This error occurs because the withdraw method is declared as static, meaning it can be called directly from the class without the need for an object instance. However, the balance field is non-static, which means it can only be accessed through an object instance.

To rectify this error, we need to modify the withdraw method to remove its static declaration:

<code class="java">public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}</code>
Copy after login

Alternatively, we could make the balance field static, which would allow it to be accessed without an object instance. However, this is not always desirable as it could lead to shared mutable state amongst all instances of the class.

By following these principles, we can avoid such errors and ensure that our code adheres to Java's static and non-static field usage guidelines.

The above is the detailed content of Why Does Java Throw an Error When Making a Static Reference to a Non-Static Field?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template