>  기사  >  Java  >  Java 오류 \"비정적 필드에 대한 정적 참조를 만들 수 없습니다\"가 발생하는 이유는 무엇입니까?

Java 오류 \"비정적 필드에 대한 정적 참조를 만들 수 없습니다\"가 발생하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 18:10:02275검색

Why am I getting the Java error

Java 오류: "비정적 필드에 대한 정적 참조를 만들 수 없습니다."

이 오류는 비정적 필드에 액세스하려고 할 때 발생합니다. 정적 메소드 내의 정적 필드. Java에서 정적 메소드는 클래스에 속하며 정적 변수에만 액세스할 수 있는 반면, 비정적 메소드(인스턴스 메소드)는 클래스의 인스턴스에 속하며 정적 변수와 비정적 변수 모두에 액세스할 수 있습니다.

In 코드에서 기본 메소드는 정적이며 비정적인 인출 및 입금 메소드를 호출하려고 시도합니다. 이 오류는 정적 컨텍스트 내에서 잔액 필드를 참조하려고 한다는 것을 의미합니다.

해결 방법:

이 문제를 해결하려면 다음을 수행해야 합니다. 인출 및 입금 방법도 정적입니다. 그러나 특정 계정 인스턴스에서 작동하도록 의도된 원래 메서드를 수정하는 것은 권장되지 않습니다. 대신, 기본 메서드 내에서 이러한 메서드의 오버로드된 버전을 생성하세요.

업데이트된 코드는 다음과 같습니다.

<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으로 문의하세요.