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

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

Linda Hamilton
Linda Hamilton원래의
2024-11-03 00:32:02240검색

Why Do I Get

JAVA: "비정적 필드에 대한 정적 참조를 만들 수 없음" 및 "비정적 메서드에 대한 정적 참조를 만들 수 없음" 오류 이해

Java 프로그래밍에는 정적이거나 비정적인 필드와 메서드를 조작하는 작업이 포함되는 경우가 많습니다. 일반적인 오류를 방지하려면 둘 사이의 차이점을 이해하는 것이 중요할 수 있습니다.

정적 및 비정적

정적 필드와 메서드는 클래스 자체와 연결되어 있습니다. 클래스의 특정 객체보다. 객체를 생성할 필요 없이 클래스 이름을 사용하여 직접 액세스할 수 있습니다. 반면, 비정적 필드와 메서드는 인스턴스별로 다르며 사용하려면 클래스의 개체가 필요합니다.

"비정적 필드/메소드에 대한 정적 참조를 만들 수 없습니다." 오류

이 오류는 정적 메서드나 클래스 선언 자체 등 정적 컨텍스트 내에서 비정적 필드나 메서드에 액세스하려고 할 때 발생합니다. 이 오류를 해결하려면 필드 또는 메서드를 정적으로 선언하거나 클래스의 인스턴스를 만들고 개체 인스턴스를 통해 비정적 멤버에 액세스할 수 있습니다.

제공한 예제 코드에서:

<code class="java">public class Cerchio {
    float r; // non-static field
    float area; // non-static field
    float cfr; // non-static field
    
    public static void main(String[] args) {
        r = 5; // Error: Cannot access non-static field 'r' from static method 'main'
        // ...
    }
}</code>

정적 메인 메소드에서 비정적 필드 r에 직접 액세스하려고 하여 오류가 발생했습니다. 올바른 접근 방식은 아래와 같이 Cerchio 클래스의 인스턴스를 생성하고 객체를 통해 r에 액세스하는 것입니다.

<code class="java">public class Cerchio {
    float r; // non-static field
    float area; // non-static field
    float cfr; // non-static field
    
    public static void main(String[] args) {
        Cerchio cerchio = new Cerchio();
        cerchio.r = 5; // OK: Accessing non-static field through an object
        // ...
    }
}</code>

이러한 규칙을 준수하면 "비-에 대한 정적 참조를 만들 수 없습니다"라는 오류를 피할 수 있습니다. Static Field/Method' 오류가 발생하고 더욱 깔끔하고 강력한 Java 코드가 작성됩니다.

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

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