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 중국어 웹사이트의 기타 관련 기사를 참조하세요!