[기술 면접 질문] 형 변환 (Type Casting)
형 변환(Type Casting)
- 어떤 값의 데이터 타입을 다른 데이터 타입으로 변환하는 것
- Kotlin은 모든 값을 객체로 관리
=> Kotlin에서의 형 변환은 클래스 캐스팅
- 클래스 캐스팅의 두 종류
- 업 캐스팅(up casting)
- 하위 클래스 타입 -> 상위 클래스 타입의 객체로 변환(축소)
- 다형성 제공
- 다운 캐스팅(down casting)
- 상위 클래스 타입 -> 하위 클래스 타입(원본 타입)의 객체로 변환(확장)
- Kotlin 클래스 캐스팅 연산자
- as 연산자
- 객체를 지정된 클래스 타입으로 변환하는 연산자
- as 연산자로 형 변환이 발생한 객체는 변환된 타입 유지
- is 연산자
- 형 변환이 가능하면 변환을 하고 true를 반환하는 연산자
- 일반적으로 if 문의 조건문으로 사용
-> if 문 내에서 변환된 타입이 유지
-> if 문에서 나가게 되면 형 변환되기 전 타입으로 돌아감
open class Person(){
fun greet() = println("안녕하세요.")
}
class Dancer():Person(){
fun dance() = println("둠칫둠칫")
}
class Singer():Person(){
fun sing() = println("룰루랄라")
}
fun main() {
val dancer1 = Dancer()
val dancer2 = Dancer()
val singer1 = Singer()
val singer2 = Singer()
val people = mutableListOf<Person>()
people.add(dancer1 as Person)
people.add(dancer2 as Person)
people.add(singer1 as Person)
people.add(singer2 as Person)
people.forEach{
if(it is Dancer){
it.dance()
}
if(it is Singer){
it.sing()
}
}
}