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

자식클래스 참조 변수가 부모 클래스 참조 변수로 형변환 될 수는 없다.


댓글

이 블로그의 인기 게시물

Intel® HAXM installation failed 해결하기

Kotlin Interface

Kotlin this, super