[기술 면접 질문] 형 변환 (Type Casting)

0

기술 면접 준비

목록 보기
17/19
post-thumbnail

[기술 면접 질문] 형 변환 (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>()
    // as 연산자를 사용해, 
    // 자식 클래스를 부모 클래스로 업 캐스팅
    people.add(dancer1 as Person)
    people.add(dancer2 as Person)
    people.add(singer1 as Person)
    people.add(singer2 as Person)
    
    people.forEach{
        // is 연산자를 사용해, 
        // 부모 클래스를 자식 클래스(원본 클래스)로 다운 캐스팅
        if(it is Dancer){
            it.dance()
        }
        if(it is Singer){
            it.sing()
        }
    }
}
profile
Be able to be vulnerable, in search of truth

0개의 댓글