2011-03-13 5 views
1

Java의 클래스가 static 또는 non-static입니까?클래스는 Java의`static` 또는`non-static`입니까?

+5

내가 먼저 가길 원하십니까? – st0le

+3

을 정적 또는 정적이 아닙니다. – necromancer

+2

왜이 투표가 내려집니다!? 그 사람은 Java의 클래스가 정적인지 아닌지에 관해 명확하게 알지 못합니다. 그것은 그것을 유효한 기술적 인 질문으로 만듭니다. –

답변

7

Static은 블록, 메소드 및 클래스 멤버 변수에만 적용됩니다. 내부 클래스는 클래스를 포함하는 정적 멤버 일 수는 있지만 클래스 정적을 갖는 것은 의미가 없습니다. 참조 nested classes.

+2

+1 (외부) 클래스가 정적이라고 말하면 파란색이라고 말하는 것만 큼 의미가 있습니다. – Thomas

+3

최상위 (외부) 클래스의'static' 키워드는 실제로 컴파일러 오류를 생성합니다. –

4

클래스는 정적이 아닙니다. 내부 클래스 만 정적으로 표시 할 수 있습니다.

public class NotStatic 
{ 
    static class StaticClass 
    { 
    } 
} 

정적 일 수있는 유일한 유형입니다.

편집 :

public class NotAStaticClass 
{ 
    private static int foo; 

    public static int getFoo() 
    { return foo; } 
} 

어떻게 정적이 클래스의 인스턴스를? 답변, 할 수 없습니다. 여전히 새로운 연산자를 사용해야합니다.

NotAStaticClass s1 = new NotAStaticClass(); 
0

고정적 인 개념은 한 번만 초기화됩니다. 즉 메모리에 단 하나의 복사본 만 있습니다. 메모리에 다른 복사본을 다시 만들지 않고도 동일한 복사본을 사용할 수 있습니다. 따라서 클래스가 템플릿이되는 것은 정적이 아닙니다 ...

1

정적 내부 클래스 또는 정적 메서드 또는 정적 변수를 사용하고 있습니까? 멀티 스레드 봉투에 정적을 사용하여 다음과 같은 경우

  • 피 정적을 사용하여

    으로 모범 사례 마십시오.

  • 비즈니스 로직 계층에 정적 메서드를 사용하지 않도록하십시오. 그렇지 않으면 상속, 런타임 다형성과 같은 OOP의 이점이 손실 될 수 있습니다.
0

클래스는 정적 일 수 없습니다. 클래스 내의 메소드, 블록 및 변수 만 정적 일 수 있지만 클래스 자체는 아닙니다.