코틀린 강좌 #23 중첩클래스와 내부클래스

Kotlin/기본 문법 · 2020. 12. 24. 13:41

테크과학! DiMo

 

테크과학! DiMo

개발자가 얘기하는 생활 속 IT기술에 대한 과학! 여러분이 몰랐던, 혹은 정확히 알지 못했던 IT 테크놀러지를 파드립니다! 좋은 영상을 위한 채널 후원, 투네이션을 통해서 해주세요! 후원링크 htt

www.youtube.com

 

 

개발 환경: play.kotlinlang.org


중첩 클래스(Nested Class)

하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기 만들어진 형식

 

class Outer {
    class Nested {
        
    }
}

Outer.Nested()

 

 

 

 

 

내부 클래스(Inner Class)

 

혼자서 객체를 만들수는 없고 외부 클래스의 객체가 있어야만 생성과 사용이 가능한 클래스

 

내부 클래스(Inner Class)
class Outer {
    inner class Inner { // inner 키워드
        
    }
}

 

 

 

fun main() {
    Outer.Nested().introduce()
    
    val outer = Outer()
    val inner = outer.Inner()
    
    inner.introduceInner()
    inner.introduceOuter()
    
    outer.text = "Changed Outer Class"
    inner.introduceOuter()
}

class Outer {
    var text = "Outer Class"
    
    class Nested {
        fun introduce() {
            println("Nested Class")
        }
    }
    
    inner class Inner {
        var text = "Inner Class"
    
    	fun introduceInner() {
            println(text)
        }
        
        fun introduceOuter() {
            println(this@Outer.text)
        }
    }
}

Output:
Nested Class
Inner Class
Outer Class
Changed Outer Class

 


중첩 클래스와 내부 클래스는 클래스 간의 연계성을 표현하여 코드의 가독성 및 작성 편의성이 올라갈 수 있으므로

 

적절한 상황에서 사용하면 좋다.