Kotlin is 연산자
Kotlin is 연산자
- 형 변환이 가능하면 변환을 하고 true를 반환한다.
- if 문으로 구성하여 사용하며, if 문 내에서만 변환된 타입을 사용하고 if 문을 나가게 되면 변환되기전의 타입으로 다시 변경된다.
fun main() {
val obj1:SubClass1 = SubClass1()
val chk1 = obj1 is SuperClass1
println ("chk1 : $chk1")
}
open class SuperClass1
class SubClass1: SuperClass1()
결과값 >
chk1 : true
SubClass1 이 SuperClass1 을 상속받았으므로, SubClass1 으로 만들어진 obj1 은 SuperClass1 으로 형변환이 가능하다.
따라서 Boolean 타입 변수인 chk1 은 true 로 리턴이 된다.
fun main() {
val obj1:SubClass1 = SubClass1()
val chk1 = obj1 is SuperClass1
val chk2 = obj1 is Int // 에러 발생
println ("chk1 : $chk1")
}
open class SuperClass1
class SubClass1: SuperClass1()
Kotlin: Incompatible types: Int and SubClass1
obj1 은 Int 타입으로 할당 할 수 없기 때문에 위와 같은 오류메시지가 발생한다. 오류 메시지는 일반적으로 Kotlin에서 SubClass1의 인스턴스를 Int 타입의 변수에 할당하려고 할 때 발생합니다. 이는 호환되지 않는 타입이기 때문에 허용되지 않습니다.
fun main() {
val obj1:SubClass1 = SubClass1()
val super1:SuperClass1 = obj1
val chk1 = super1 is SubClass1
println ("chk1 : $chk1")
}
open class SuperClass1
class SubClass1: SuperClass1()
결과 >
chk1 : true
주어진 코드는 SuperClass1과 SubClass1라는 두 개의 클래스가 있습니다. SubClass1은 SuperClass1을 상속받는 클래스입니다.
obj1이라는 이름의 변수를 선언하고, SubClass1의 인스턴스를 생성하여 할당합니다.
super1이라는 이름의 변수를 선언하고, obj1을 SuperClass1 타입으로 선언한 후에 할당합니다.
위의 코드는 다형성(polymorphism)의 개념을 보여주고 있습니다. SubClass1은 SuperClass1의 하위 클래스이기 때문에 SubClass1의 인스턴스는 SuperClass1 타입으로 선언한 변수에 할당할 수 있습니다.
이때 is 연산자를 사용하여 super1이 SubClass1의 인스턴스인지 확인할 수 있습니다. chk1 변수는 super1이 SubClass1의 인스턴스인 경우 true를 가지게 됩니다.
chk1이라는 이름의 변수를 선언하고, super1이 SubClass1의 인스턴스인지 확인하는 연산을 수행합니다.
"chk1: true"라는 문자열을 출력합니다.
따라서 위의 코드를 실행하면 "chk1: true"라는 결과가 출력될 것입니다.
댓글
댓글 쓰기