본문 바로가기
자바

'정적'키워드는 수업에서 무엇을합니까?

by º기록 2021. 4. 13.
반응형

구체적으로, 나는이 코드를 시도하고 있었다 :

package hello;

public class Hello {

    Clock clock = new Clock();

    public static void main(String args[]) {
        clock.sayTime();
    }
}

그러나 그것은 오류를주었습니다

정적 메서드에서 비 정적 필드에 액세스 할 수 없습니다.

그래서 clock 의 선언을 다음과 같이 변경했습니다.

static Clock clock = new Clock();

그리고 그것은 일했습니다.선언 전에 그 키워드를 넣는 것은 무엇을 의미합니까?그 객체에 무엇을 할 수 있는지에 대해 정확히 무엇을 할 것인가?

 

해결 방법

 

static 멤버는 특정 인스턴스 대신 클래스에 속합니다.

이는 클래스의 백만 명의 인스턴스를 생성하는 경우에도 정적 필드의 하나의 [1] 의 한 인스턴스 만 존재한다는 것을 의미합니다.어떤 것을 만드십시오.모든 인스턴스에서 공유됩니다.

static 메소드는 특정 인스턴스에 속하지 않기 때문에 인스턴스 멤버를 참조 할 수 없습니다.주어진 예제에서 main hello 클래스의 인스턴스를 알지 못한다 (그러므로 clock 클래스의 인스턴스)는 참조해야합니다....에 static 멤버는 static 멤버 만 참조 할 수 있습니다.인스턴스 구성원은 물론 <코드> 정적 멤버에 액세스 할 수 있습니다.

사이드 참고 : 물론 static 멤버는 객체 참조 를 통해 인스턴스 멤버 에 액세스 할 수 있습니다.

예:

public class Example {
    private static boolean staticField;
    private boolean instanceField;
    public static void main(String[] args) {
        // a static method can access static fields
        staticField = true;

        // a static method can access instance fields through an object reference
        Example instance = new Example();
        instance.instanceField = true;
    }

[1] : 런타임 특성에 따라 클래스 로더 또는 appdomain 또는 스레드 당 하나 일 수 있지만 그 점 옆에 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/413898

 

 

반응형

댓글