컴퓨터 언어/코틀린

[Kotiln] 코틀린 중첩 클래스와 내부 클래스

훈츠 2020. 2. 21. 14:50
반응형

안녕하세요. 훈츠 입니다. 금일은 중첩 클래스와 내부클래스에 대해 알아보도록 하겠습니다. 

중첩 클래스

외부 클래스와 내부에 다른 클래스와 강하게 연결되어 있다는 의미를 전달하기 위해 만들어진 클래스 입니다. 하지만 외부 클래스와 내부 클래스는 내용을 공유 할수 없다는 특징도 있습니다. 

  • 외부 클래스와 내용을 공유 할수 없습니다. 
  • 사용시에는 중첩 클래스에 인스턴스를 만들어서 사용해야 합니다.  
    • var nested = Outer.Nested() 
class Outer(){
    var text = "Outer class"
    class Nested(){
        fun introduce(){
            println("nested class")
        }
    }
}

fun main() {
    var outerNested = Outer.Nested()
    outerNested.introduce()
}
//출력화면 
nested class

내부 클래스 (inner)

내부 클래스도, 중첩 클래스와 같은 목적으로 만들어진 클래스 입니다만 사용법과 외부클래스의 내용을 공유 할수 있다는 점이 다릅니다. 

  • 외부 클래스의 내용을 공유 할수 있어서, 함수나 속성을 사용 가능합니다. 
  • 사용시에는 외부 클래스의 인스턴스를 먼저 만들고, 다시 Inner 클래스의 인스턴스를 만들어야 합니다. 
    • var outer = Outer()
    • var outInner = outer.Inner()
class Outer(){
    var text = "Outer class"
    inner class Inner(){
        fun introduce(){
            println("called inner " + text)
        }
    }    
}
fun main() {
    var outer = Outer()
    var outerInner = outer.Inner()
    outerInner.introduce()
}
//출력화면
called inner Outer class

중첩 클래스와 내부클래스의 특징을 파악하고, 잘 사용하면 코드의 가독성이 높아지고 관리가 편리해지는 장점이 있습니다. 

반응형