확장 함수란 문법은 상속 없이 클래스 외부에서 멤버 함수를 추가할 수 있는 문법을 뜻한다.
아래의 예제에서는 String 클래스에서 isNumber이라는 기존에 정의되어 있지 않은 함수를 확장 함수 문법을 통하여, 추가한 것이다.
fun String.isNumber(): Boolean
{
var i = 0
while (i < this.length)
{
if (!('0' <= this[i] && this[i] <= '9'))
return false
i += 1
}
return true
}
fun main(args: Array<String>)
{
println("1234567890".isNumber())
}
그리고 확장 프로퍼티는 함수가 아닌 Property를 확장하는 것이다.
아래의 예제 코드를 참고하면 되겠다.
val String.isNumber: Boolean
get()
{
var i = 0
while (i < this.length)
{
if (!('0' <= this[i] && this[i] <= '9'))
return false
i += 1
}
return true
}
fun main(args: Array<String>)
{
println("1234567890".isNumber)
}
참고 : 초보자를 위한 Kotlin 200제 라는 책을 기반으로 공부 내용을 정리하였습니다.
다시 말하자면, 참조 변수가 실제로 가리키고 있는 객체의 타입을 알아낼 수 있는 역할을 한다.
이에 대한 예제는 다음과 같다.
open class Person(val name: String, val age: Int)
class Student(name: String, age: Int, val id: Int) : Person(name, age)
class Professor(name: String, age: Int) : Person(name, age)
fun main(args: Array<String>)
{
val person: Person = Student("Mark Zuckerberg", 33, 20171225)
println(person is Person)
println(person is Student)
println(person is Professor)
val person2: Person = Professor("Kim", 48)
println(person2 is Person)
println(person2 is Student)
println(person2 !is Professor)
}
위의 예제 코드를 확인할 수 있듯이 객체 타입을 비교 하고 있으며, 이에 대한 결과는 다음과 같다.
println(person is Person) : true
println(person is Student) : true println(person is Professor) : false
println(person2 is Person) : true println(person2 is Student) : false println(person2 !is Professor) : false
참고 : 초보자를 위한 Kotlin 200제 라는 책을 기반으로 공부 내용을 정리하였습니다.