Open daehwan2yo opened 1 year ago
java 에서는 class 내부에 class 를 선언해주면, 자동으로 내부 클래스 (inner class) 가 되었다.
{OuterClass}.{InnerClass}()
위와 같이 Inner class 를 외부에서도 사용이 가능하나, Inner class 는 외부 class 의 필드도 갖고있기 때문에 외부 클래스의 객체까지 다 지워져야 할당이 해제될 수 있다.
kotlin 에서는 java 와 반대로 적용되어진다.
kotlin 에서는 단순히 클래스 내 클래스를 명시하면 중첩 클래스 (nested class) 가 된다.
내부 클래스로 명시하기 위해서는 inner
라는 키워드가 필요하다.
https://kotlinlang.org/docs/nested-classes.html
Nested 와 Inner 를 사용하는 이유
객체의 생명주기와 연관이 있다.
Nested 같은 경우는 감싸고 있는 클래스의 생성과 연관이(참조가) 없다.
Inner class 같은 경우는 감싸고 있는 클래스 (상위 클래스)의 생성과 연관이 (참조가) 있다.
Nested
중첩 클래스
Inner
내부 클래스, members if its outer class