"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java에서 \"비정적 필드에 대한 정적 참조를 만들 수 없습니다\" 오류가 발생하는 이유는 무엇입니까?

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

2024-11-07에 게시됨
검색:366

Why am I getting the \

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

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

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

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

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

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

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

main 메서드에 대한 수정된 코드:

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());
}

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

public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}

public void deposit(double depositAmount) {
    balance  = depositAmount;
}
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3