반응형
Java의 내부 클래스와 정적 중첩 클래스의 주요 차이점은 무엇입니까?디자인 / 구현은이 중 하나를 선택하는 역할을 수행합니까?
해결 방법
중첩 된 클래스는 정적 및 비 정적으로 두 가지 범주로 나뉩니다.정적으로 선언 된 중첩 된 클래스는 단순히 정적 중첩 클래스라고합니다.비 정적 중첩 클래스를 내부 클래스라고합니다.
정적 중첩 클래스는 둘러싸인 클래스 이름을 사용하여 액세스됩니다.
OuterClass.StaticNestedClass
예를 들어, 정적 중첩 클래스에 대한 객체를 만들려면이 구문을 사용하십시오.
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
내부 클래스의 인스턴스 인 객체는 외부 클래스의 인스턴스 내에 존재합니다.다음과 같은 클래스를 고려하십시오.
class OuterClass {
...
class InnerClass {
...
}
}
내부 클래스의 인스턴스는 외부 클래스의 인스턴스 내에서만 존재할 수 있으며 동봉 된 인스턴스의 메서드 및 필드에 직접 액세스 할 수 있습니다.
내부 클래스를 인스턴스화하려면 먼저 Outer 클래스를 인스턴스화해야합니다.그런 다음이 구문으로 외부 개체 내에서 내부 오브젝트를 작성하십시오.
OuterClass outerObject = new OuterClass()
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
class A {
int t() { return 1; }
static A a = new A() { int t() { return 2; } };
}
여기서 new a () {...}
는 정적 컨텍스트 에 정의 된 내부 클래스이며 묶는 인스턴스가 없습니다.
참조 페이지 https://stackoverflow.com/questions/70324
반응형
'자바' 카테고리의 다른 글
ArrayList의 마지막 값을 얻는 방법 (0) | 2021.04.09 |
---|---|
문자열의 특정 색인에서 문자를 교체 하시겠습니까? (0) | 2021.04.09 |
JNI 공유 라이브러리 (JDK)를로드하지 못했습니다. (0) | 2021.04.09 |
SLF4J : 클래스 "org.slf4j.impl.StaticLoggerBinder"를로드하지 못했습니다. (0) | 2021.04.09 |
문자열에서 마지막 문자를 제거하는 방법은 무엇입니까? (0) | 2021.04.09 |
댓글