>Java >java지도 시간 >Java에서 \'비정적 필드에 대한 정적 참조를 만들 수 없습니다\' 오류가 발생하는 이유는 무엇입니까?

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

Linda Hamilton
Linda Hamilton원래의
2024-10-30 18:47:31456검색

Why am I getting the

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

Java 프로그래밍에서 "정적 참조를 만들 수 없습니다" 비정적 필드에 대한 참조" 오류는 정적 메서드 내에서 비정적 필드(인스턴스 변수라고도 함)에 액세스하려고 할 때 발생합니다.

제공된 코드에서는 기본 메서드가 static으로 선언되었습니다. 즉, 정적 메서드 및 필드를 포함하여 클래스의 정적 멤버만 참조할 수 있습니다. 그러나 Balance 및 AnnualInterestRate 필드는 정적이 아니므로 Account 클래스의 각 인스턴스에 고유합니다.

이 오류를 해결하려면 적절한 Java 구문을 따르도록 코드를 수정해야 합니다.

  • > 비정적 필드에 대한 정적 참조 제거:

    • 기본 메서드 내에서 Balance 및 AnnualInterestRate에 대한 참조는 개체 참조(예: account.getBalance)를 통해 액세스되는 인스턴스 변수이므로 제거해야 합니다. (), account.getAnnualInterestRate())
  • > 비정적 메소드 인스턴스 메소드 만들기:

    • 인출 및 입금 메소드는 객체 참조를 통해 잔액 필드에 액세스해야 하므로 비정적으로 선언되어야 합니다. 이를 통해 특정 계정 인스턴스의 잔액을 수정할 수 있습니다.

주 방법에 대한 수정된 코드:

<code class="java">public static void main(String[] args) {
    Account account = new Account(1122, 20000, 4.5);

    account.withdraw(2500);
    account.deposit(3000);
    System.out.println("Balance is " + account.getBalance());
    System.out.println("Monthly interest is " + account.getAnnualInterestRate() / 12);
    System.out.println("The account was created " + account.getDateCreated());
}</code>

출금 및 입금 방법에 대한 수정된 코드:

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

public void deposit(double depositAmount) {
    balance += depositAmount;
}</code>

위 내용은 Java에서 '비정적 필드에 대한 정적 참조를 만들 수 없습니다' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.