[Kotlin/Java] Inner Class / Nested Class
Kotlin 중첩 클래스 / 내부 클래스
Java 중첩 클래스 / 내부 클래스
최상위에 정의하는 class에 ``java static``을 붙이면 에러가 발생하는데, 이는 ``java static`` class로 만들 수 없어서가 아니라 이미 ``java static``이기 때문이다.
```java
class Nested {
//int resource = 0; _Nested에서 사용 불가
static int static_resource = 1;
/* static이니까 바깥쪽 클래스라고 해도 static 멤버에만 접근할 수 있다. */
static class _Nested {
//int _resource = 2; Nested에서 접근 불가
static int _static_resource = 3;
public static void _use(){
//System.out.println(resource); 접근 불가
System.out.println(static_resource);
}
}
public void use(){
_Nested._use();
// System.out.println(_resource); 접근 불가
System.out.println(_Nested._static_resource);
}
}
```
```java
class Inner {
int resource = 0;
static int static_resource = 1;
/* 내부 클래스는 바깥쪽 클래스에 대한 참조를 묵시적으로 포함한다. */
class _Inner {
int _resource = 2;
//inner class에서는 static 선언 불가.
//static int _static_resource = 3;
public void _use(){
System.out.println(resource); // 접근 가능
System.out.println(static_resource);
}
}
public void use(){
_Inner i = new _Inner();
i._use();
System.out.println(i._resource);
//System.out.println(_Inner._static_resource);
}
}
```
```java
public class ch4 {
@Override
public static void main(String[] args) {
Nested n = new Nested();
n.use();
Inner i = new Inner();
i.use();
}
}
```
'Java Stack > Kotlin' 카테고리의 다른 글
[Kotlin] Class, 생성자 (0) | 2017.12.01 |
---|---|
[Kotlin] enum / when / sealed (0) | 2017.12.01 |
[Regex] Kotlin (0) | 2017.12.01 |
[Kotlin] 확장 함수 / 확장 프로퍼티, 최상위 함수 / 최상위 프로퍼티 (0) | 2017.12.01 |
[Kotlin] Tip2 + 문자열 템플릿 (0) | 2017.11.30 |