이번 포스트에서는 자바와 코틀린에서 사용하는 inner class, nested class 에 대해 정리해 보겠습니다.
class Outer {
private String outer = "Outer";
class Inner {
public Inner() {
// ⭕️ 내부 클래스에서 외부 클래스의 outer 에 접근 가능.
}
}
}
inner class 로 정의됩니다.class Outer {
private String outer = "Outer";
static class Inner {
public Inner() {
// ❌ 내부 클래스에서 외부 클래스의 outer 에 접근 불가능.
}
}
}
static 을 추가해야 합니다.class Outer {
private String outer = "Outer";
static class Inner {
public Inner(Outer outerClass) {
// outerClass.outer 에 접근 가능.
}
}
}
class Outer {
private val outer = "Outer"
class Inner {
init {
// ❌ 내부 클래스에서 외부 클래스의 outer 에 접근 불가능.
}
}
}
Nested class 로 정의됩니다.class Outer {
private val outer = "Outer"
inner class Inner {
init {
// ⭕️ 내부 클래스에서 외부 클래스의 outer 에 접근 가능.
}
}
}
inner 를 추가해야 합니다.