14

이 질문에는 이미 답변이 있습니다.

나는 클래스가 선언 된 것으로 보아왔다.static...에서java, 그러나 혼란스러워 :

클래스는 객체를 만드는 데 사용되기 때문에 다른 객체는 다른 메모리 할당을 갖습니다.

그럼 뭐야?"static"클래스를 선언 할 때 사용됩니까?member variables모두static?

이게 말이 돼?


3 답변


27

첫째, 최상위 클래스를 정적으로 만들 수 없습니다. 중첩 클래스를 정적으로 만 만들 수 있습니다. 중첩 클래스를 정적으로 만들면 기본적으로 중첩 클래스의 인스턴스가 외부 클래스 / 최상위 클래스에서 사용할 필요가 없다고 말합니다.

예:

class Outer {

static class nestedStaticClass {

//its member variables and methods (don't nessarily need to be static)
//but cannot access members of the enclosing class
}

public void OuterMethod(){
//can access members of nestedStaticClass w/o an instance
}
}

또한 덧붙이 자면, 상수가 아니라면 내부 클래스 안에 정적 필드를 선언하는 것은 불법입니다 (다른 말로하면,static final). 정적 중첩 클래스는 내부 클래스가 아니므로양철통정적 멤버를 여기에 선언하십시오.

클래스는 중첩 클래스에 중첩 될 수 있습니까?

한마디로, 그렇습니다. 아래를 보아라.Test중첩 된 내부 클래스와 중첩 된 정적 클래스는 둘 다 중첩 된 클래스를 가질 수 있습니다. 그러나 최상위 클래스 내에 정적 클래스 만 선언 할 수 있다는 것을 기억하십시오. 내부 클래스 내부에 선언하는 것은 불법입니다.

public class Test {
    public class Inner1 {
        public class Inner2 {
            public class Inner3 {

            }
        }
    }
    public static class nested1 {
        public static class nested2 {
            public static class nested3 {

            }
        }   
    }
}


  • 내부 클래스는 정의에 의해 정적이 아닙니다. - assylias
  • @assylias 사실 .. :), 편집 됨 - PermGenError
  • @ PermGenError, 따라서 대부분 두 가지 레벨이 있습니다. - Al2O3
  • @Rubby 당신은 무엇을 의미합니까?level?, 중첩 클래스 (정적 / 비 정적)는 단순히 최상위 클래스의 멤버입니다. :) - PermGenError
  •   중첩 클래스를 정적으로 정의하면 기본적으로 중첩 클래스의 인스턴스가 외부 클래스 / 최상위 클래스에서 사용할 필요가 없다고 말합니다. 올바르지 않습니다. 인스턴스를 필요로하지 않습니다.밖의클래스를 사용하여정적 중첩 된수업. ' 둘러싸는 클래스의 멤버에 액세스 할 수 없습니다. ' 또한 올바르지 않습니다 : 액세스 할 수 있습니다.static회원. - user207421

6

중첩 클래스 (클래스 내의 클래스)만이 정적으로 선언 될 수 있습니다. 따라서 중첩 클래스에 액세스하기 위해 부모 클래스를 인스턴스화 할 필요가 없습니다.

좋은 예제 코드가 있습니다.이 대답


1

이 클래스와 포함하는 클래스의 관계를 설명합니다.

내부 수업다른 클래스의 범위 내에서 정의 된 클래스입니다. 내부 클래스의 인스턴스는 컨테이너 클래스 (인스턴스가 만들어진 인스턴스)의 특정 인스턴스에 연결됩니다.

정적 중첩 클래스중첩 된 클래스이지만 static으로 정의됩니다. 정적 멤버와 마찬가지로 특정 인스턴스와 관련이 없습니다. 그들은 단지 포함하는 클래스에 속합니다. 중첩 클래스에서는 특정 인스턴스가 연결되어 있지 않기 때문에 포함하는 클래스의 정적이 아닌 멤버 / 메서드를 참조 할 수 없습니다.

연결된 질문


관련된 질문

최근 질문