>Java >java지도 시간 >정적 메소드가 Java의 비정적 필드에 액세스할 수 없는 이유는 무엇입니까?

정적 메소드가 Java의 비정적 필드에 액세스할 수 없는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-31 06:55:02907검색

Why Can't a Static Method Access a Non-Static Field in Java?

정적 메서드의 비정적 필드 참조

Java에서는 비정적 필드 또는 메서드에 대한 정적 참조를 만들 수 없습니다. 이는 비정적 필드 및 메서드와 달리 정적 요소가 클래스 인스턴스와 독립적으로 존재하기 때문입니다.

다음 코드를 고려하세요.

public class NonStaticFieldReference {

    private float r; // Non-static field

    public static void main(String[] args) {
        System.out.println(r); // Error!
        c_area(); // Error!
    }

    private static void c_area() {
        // Cannot reference non-static field r from static method
    }
}

이 예에서 기본( ) 메서드는 정적입니다. 즉, 비정적 필드 'r'에 액세스할 수 없습니다. 마찬가지로 정적 메서드 c_area()는 비정적 필드 'r'에 액세스할 수 없습니다.

해결 방법

이 문제를 해결하려면 클래스의 인스턴스를 만들고 해당 인스턴스를 통해 비정적 필드와 메소드에 액세스합니다.

public class NonStaticFieldReference {

    private float r; // Non-static field

    public static void main(String[] args) {
        NonStaticFieldReference instance = new NonStaticFieldReference();
        instance.r = 5;
        instance.c_area();
    }

    private void c_area() {
        // Access non-static field r from non-static method
    }
}

이렇게 하면 비정적 필드 'r'이 클래스의 객체를 통해 액세스되어 적절한 필드 참조가 가능해집니다.

위 내용은 정적 메소드가 Java의 비정적 필드에 액세스할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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