Kotlin 형변환
Kotlin 형변환
- 변수에 담긴 값이나 객체를 다른 형태로 변환하는 것을 의미한다.
- Kotlin 은 모든 값을 객체로 관리하기 떄문에, Kotlin 에서의 형변환은 다른 클래스 타입의 객체로 변환하는것을 의미한다.
스마트 캐스팅
- Java에서 자동형변환이라고 부르는 개념이다.
- 특정 조건을 만족하면 자동으로 형변환이 발생하는 개념이다.
- 스마트 캐스팅 기능 덕분에 형변환에 대해 개발자가 크게 신경을 쓰지 않아도 된다.
- 형 변환은 객체의 클래스 타입이 아닌 객체의 주소 값을 가지고 있는 참조 변수의 타입이 변경되는 것이다.
객체 타입 변환
객체의 타입변환은 상속관계나 구현한 인터페이스 타입에 해당한다.
- 부모클래스의 타입으로 형변환
fun main() {
val obj1:SubClass1 = SubClass1()
val obj2:SubClass2 = SubClass2()
// 부모클래스 타입 참조 변수에 담는다.
val super1:SuperClass1 = obj1
}
open class SuperClass1
interface Inter1
class SubClass1 : SuperClass1()
class SubClass2 : Inter1\
- 구현한 인터페이스 타입으로 형변환
fun main() {
val obj1:SubClass1 = SubClass1()
val obj2:SubClass2 = SubClass2()
// 부모클래스 타입 참조 변수에 담는다.
val inter1:Inter1 = obj2
}
open class SuperClass1
interface Inter1
class SubClass1 : SuperClass1()
class SubClass2 : Inter1
- 구현한 인터페이스 타입으로 형변환
fun main() {
val obj1:SubClass1 = SubClass1()
val obj2:SubClass2 = SubClass2()
val super1:SuperClass1 = obj1
val obj3:SubClass1 = super1 //Error
}
open class SuperClass1
interface Inter1
class SubClass1 : SuperClass1()
class SubClass2 : Inter1
Kotlin: Type mismatch: inferred type is SuperClass1 but SubClass1 was expected
자식클래스 참조 변수가 부모 클래스 참조 변수로 형변환 될 수는 없다.
댓글
댓글 쓰기