>  기사  >  Java  >  Java에서 \'비정적 필드/메서드에 대한 정적 참조를 만들 수 없습니다\'라는 메시지가 나타나는 이유는 무엇입니까?

Java에서 \'비정적 필드/메서드에 대한 정적 참조를 만들 수 없습니다\'라는 메시지가 나타나는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 08:07:27435검색

Why am I getting

Java에서 "비정적 필드/메서드에 대한 정적 참조를 만들 수 없음" 이해

Java에서 "비정적 필드/메소드에 대한 정적 참조를 만들 수 없음" 오류 발생 비정적 필드에 대한 정적 참조" 또는 "비정적 메서드에 대한 정적 참조를 만들 수 없습니다"는 코드의 정적 요소와 비정적 요소 간의 상호 작용으로 인해 특정 작업이 제한된다는 의미입니다.

오류 원인

이 오류는 정적 메서드 내부와 같은 정적 컨텍스트 내에서 인스턴스(비정적) 필드 또는 메서드에 액세스하려고 할 때 발생합니다. 인스턴스 변수는 클래스의 특정 개체와 연결되는 반면 정적 변수와 메서드는 클래스 자체에 속하며 개체 인스턴스가 필요하지 않습니다.

해결책: 인스턴스 생성

오류를 해결하려면 인스턴스 변수에 액세스하거나 인스턴스 메서드를 호출하기 전에 클래스의 인스턴스를 만들어야 합니다. 이는 인스턴스 변수와 메소드가 정적 컨텍스트에서 직접 액세스할 수 없기 때문입니다.

예를 들어 제공된 코드 조각에서 정적 메소드 main은 인스턴스 변수 r, cfr 및 Area에도 액세스하려고 시도합니다. 인스턴스 메소드 c_cfr 및 c_area로. 이 문제를 해결하려면 기본 메서드 내에서 Cerchio 클래스의 인스턴스를 만든 다음 개체 참조를 통해 인스턴스 변수 및 메서드에 액세스합니다.

<code class="java">public static void main(String[] args) {
    Cerchio cerchio = new Cerchio();
    cerchio.r = 5;
    cerchio.c_cfr();
    cerchio.c_area();
    System.out.println("The cir is: " + cerchio.cfr);
    System.out.println("The area is: " + cerchio.area);
}</code>

추가 참고 사항

  • 인스턴스 변수는 일반적으로 비공개로 선언되어야 하며 캡슐화를 위해 getter 및 setter 메서드를 통해 액세스해야 합니다.
  • 클래스 변수에 직접 액세스하지 마세요. 대신 클래스 상수나 정적 메소드를 사용하여 액세스하세요.
  • 적절한 들여쓰기와 코드 구성은 가독성을 높이고 향후 이러한 오류를 방지할 수 있습니다.

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

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