ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코틀린] 업/다운캐스팅
    카테고리 없음 2024. 3. 14. 10:09

    업캐스팅

    업캐스팅은 자식 클래스를 부모 클래스 타입으로 변환시키는걸 말한다.

    open class Bird {
        val age = 5
    }
    
    class Crow : Bird()
    
    fun main(args: Array<out String>) {
        val crow = Crow()
        println(crow.age) // 5
        
        val bird = crow as Bird
        println(bird.age) // 5
    }

    다운캐스팅

    다운캐스팅은 업캐스팅이 된 객체에 대해 다시 원래 타입으로 변환시키는걸 말한다.

     

    제일 아래에서 ClassCastException이 발생하는 이유는
    처음 생성된 원본 타입이 Bird라서 Crow로 변환시킬 수 없기 때문이다.

    open class Bird {
        val age = 5
    }
    
    class Crow : Bird()
    
    fun main(args: Array<out String>) {
        val crow = Crow()
        val bird = Bird()
        
        val castedCrow = crow as Bird // o
        val originalCrow = castedCrow as Crow // o
        
        val castedBird = bird as Crow // x (ClassCastException)
    }

     

Designed by Tistory.