-
[코틀린] 업/다운캐스팅카테고리 없음 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) }