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

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

DDD
DDD원래의
2024-11-01 11:23:25892검색

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

비정적 필드에 대한 정적 참조

Java에서는 비정적 필드에 대한 정적 참조가 오류의 원인이 될 수 있습니다. 이 문제를 이해하고 해결하기 위해 구체적인 예를 살펴보겠습니다.

다음 코드를 고려하세요.

<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>

이 코드를 컴파일하려고 하면 다음 오류가 발생합니다.

Cannot make a static reference to the non-static field balance

이 오류는 철회 메소드가 정적으로 선언되었기 때문에 발생합니다. 즉, 객체 인스턴스 없이 클래스에서 직접 호출할 수 있습니다. 그러나 잔액 필드는 비정적이므로 객체 인스턴스를 통해서만 액세스할 수 있습니다.

이 오류를 수정하려면 철회 메서드를 수정하여 정적 선언을 제거해야 합니다.

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

또는 균형 필드를 정적으로 만들어 객체 인스턴스 없이 액세스할 수 있습니다. 그러나 이는 클래스의 모든 인스턴스 간에 공유된 변경 가능 상태로 이어질 수 있으므로 항상 바람직하지는 않습니다.

이러한 원칙을 따르면 이러한 오류를 방지하고 코드가 Java의 정적 및 비- 정적 필드 사용 지침

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

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