-3

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

자바 (그리고 안드로이드)에서,static classfinal class선언?

내 질문은 정적 인스턴스에 대한 것이 아니라 클래스 선언,

static class StaticClass {
    //variables and methods
}

final class FinalClass {
    //variables and methods
}

감사,


6 답변


8

정적 중첩 클래스

클래스 메소드 및 변수와 마찬가지로 정적 중첩 클래스는 외부 클래스와 연관됩니다. 정적 클래스 메소드와 마찬가지로 정적 중첩 클래스는 객체 클래스 또는 객체 클래스에 정의 된 메소드를 직접 참조 할 수 없으며 객체 참조를 통해서만 사용할 수 있습니다. 참고 : 정적 중첩 클래스는 다른 최상위 클래스와 마찬가지로 외부 클래스 (및 다른 클래스)의 인스턴스 멤버와 상호 작용합니다. 실제로, 정적 중첩 클래스는 행동 상으로는 패키징 편의를 위해 다른 최상위 클래스에 중첩 된 최상위 클래스입니다.

정적 중첩 클래스는 포함하는 클래스 이름을 사용하여 액세스합니다.

OuterClass.StaticNestedClass

예를 들어 정적 중첩 클래스에 대한 객체를 만들려면 다음 구문을 사용합니다.

OuterClass.StaticNestedClass nestedObject =
     new OuterClass.StaticNestedClass();

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

최종 수업

final로 선언 된 클래스는 서브 클래 싱 될 수 없습니다. 이것은, 예를 들어, String 클래스와 같이 불변 인 클래스를 작성하는 경우에 특히 편리합니다.

http://docs.oracle.com/javase/tutorial/java/IandI/final.html


3

최종 수업추가 확장 (상속)을 제한합니다.

외부 클래스에는 static 키워드를 사용할 수없고, 내부 클래스에만 정적 키워드를 사용할 수 있습니다.정적 클래스


1

클래스를 최종적으로 확장 할 수 없습니다. 일반적으로 라이브러리를 만들거나 큰 프로젝트의 일부로 작업하는 경우 클라이언트가 클래스를 확장하고 기존 동작을 수정할 수 없으므로 의미가 있습니다. 자신의 프로그램에는 큰 프로그램이 아니고 우연히 잊어 버릴 수있는 경우가 아니면 수업을 끝내야 할 이유가 거의 없습니다.

정적 내부 클래스는 논리적으로 외부 (포함) 클래스에 속하지만 외부 클래스의 상태에 대한 종속성이없는 것들을위한 것입니다. 예를 들어 파서 클래스와 내부 Parser.Listener 클래스를 가질 수 있습니다. 일반적으로 내부 클래스를 사용하기로 결정한 경우 먼저 정적으로 설정하고, 가능한 경우 사물을 단순화합니다.

최종 및 정적 내부 클래스가 없어도 사용할 수 있으며, 경험을 통해 사용할 수 있습니다.


  • ' 정적 내부 클래스 ' 용어는 모순이다.   정적 중첩 "을 의미합니다. - user207421

1

다른 클래스는 final 클래스를 확장 할 수 없습니다. exmple String은 final 클래스이므로이 클래스를 확장 할 수 없습니다. 정적으로 선언 된 '최상위'클래스는 가질 수 없습니다. 수정 자 '정적'이있는 내부 클래스 만 가질 수 있습니다. 정적 내부 클래스는 외부 클래스의 정적 멤버에만 액세스합니다.


1

클래스를 final로 만들면 상속 될 수 없습니다. 일반적으로 최상위 클래스는 정적으로 만들 수는 없지만 내부 클래스는 정적으로 만들 수 있으며 중첩 된 정적 클래스는 외부 클래스의 참조가 필요하지 않습니다.공전결정적인Java의 클래스


  • 내부 클래스가 고정되어 있으면 내부 클래스가 중단됩니다. 중첩 된 클래스를 정적으로 설정할 수 있음을 의미합니다. 만나다JLS #8.1.3. - user207421

0

클래스를 정적으로 표시 할 수 없습니까?    예, 중첩 된 클래스 인 경우    아니, 정상적인 수업이라면. 중첩 된 클래스를 정적으로 표시하면 완전히 플래그가 지정된 클래스로 작동하며 classname.staticClassNmae를 사용하여 액세스합니다.

final 클래스를 표시하면 상속 될 수 없습니다.이 좋은 예입니다.Java의 클래스

연결된 질문


관련된 질문

최근 질문