+ 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다.
스마트 캐스트 (Smart Cast)란 코틀린의 특징 중 하나로 구체적으로 명시되지 않은 변수의 자료형을 값을 통해 자동으로 추론하여 해당 타입으로 자동 변환한다.
fun main() {
var smart: Number = 12.2 // Float형으로 스마트 캐스트
println("$smart")
smart = 12 // Int형으로 스마트 캐스트
println("$smart")
smart = 120L // Long형으로 스마트 캐스트
println("$smart")
smart = 12.0f // Float형으로 스마트 캐스트
println("$smart")
}
Number 클래스는 숫자를 저장하기 위한 특수한 자료형으로 코틀린 클래스 계층 구조에서 모든 숫자 타입의 상위 클래스이다.
따라서 Number형 변수는 값에 따라 모든 숫자 자료형으로 자동 변환(스마트 캐스트)된다.
fun main() {
val num = 256 // Int형으로 스마트 캐스트
if (num is Int) { // num이 Int형이라면
print(num)
}
else if (num !is Int){ // num이 Int형이 아니라면
print("Not a Int")
}
}
is, !is 키워드를 조건문과 함께 사용하여 자료형을 검사할 수 있다.
Any 클래스는 코틀린의 모든 클래스의 최상위 클래스이다.
모든 클래스(Int, String 등)가 Any 클래스를 상속하므로 모든 객체를 나타낼 수 있다.
따라서 Any 형 변수는 언제든 필요한 자료형으로 자동 변환(스마트 캐스트)된다.
fun main() {
checkArg("Hello") // String 변수를 인자로 전달
checkArg(5) // Int 변수를 인자로 전달
}
fun checkArg(x: Any) { // 인자 x를 Any형으로 받고
if (x is String) { // x가 String형이라면
println("x is String: $x")
}
if (x is Int) { // x가 Int형이라면
println("x is Int: $x")
}
}
위 코드처럼 다양한 형의 변수를 인자로 받고 그에 따라 다르게 작동하는 함수를 작성할 수 있다.
'Study > Kotlin Study' 카테고리의 다른 글
| [Kotlin] 패키지: 패키지 개요 (2) | 2023.08.22 |
|---|---|
| [Kotlin] 증가 감소 연산자 (1) | 2023.08.20 |
| [Kotlin] 자료형 변환 (0) | 2023.08.18 |
| [Kotlin] NULL: Safe - call, Non - null, 엘비스 연산자 (0) | 2023.08.18 |
| [Kotlin] 기본형 VS 참조형 (0) | 2023.08.18 |