Kotlin 함수 오버로딩, 지역 함수

Kotlin 함수 오버로딩

함수 오버로딩

fun main() {
test1()
test1(100)
test1(111.11)
test1(100, 200)
}

fun test1() {
println("매개변수 없음")
}

fun test1(a1:Int) {
println("매개변수 Int")
}

fun test1(a1:Double) {
println("매개변수 Double")
}

fun test1(a1:Int, a2:Int) {
println("매개변수 두개")
}

같은 이름의 함수여도, 매개변수의 타입, 매개변수의 갯수의 차이로 함수 오버라이딩이 가능하다.


지역 함수

 함수내에 함수를 지정할 수 있으며, 해당 함수내에서만 사용이 가능하다.

fun main() {
test1()
}

fun test1() {
println("test1 호출")

fun test2() {
println("test2 호출")
}

test2()
}

 함수 내 지역 함수를 사용할 경우, 지역 함수의 선언이, 호출부보다 하위에 위치해야 한다.

fun main() {
test1()
}

fun test1() {
println("test1 호출")

test2()

fun test2() {
println("test2 호출")
}

}

 지역 함수의 선언 부보다, 호출 부가 위에 있을 경우, 하위 지역 함수를 찾을 수 없다는 오류가 발생하게 된다.

Kotlin: Unresolved reference: test2


 지역함수를 선언한 함수 밖에서 호출 할 경우도 역시 동일한 오류가 발생한다.

fun main() {
test1()
test2() // 오류 발생 Kotlin: Unresolved reference: test2
}

fun test1() {
println("test1 호출")

fun test2() {
println("test2 호출")
}
}



댓글

이 블로그의 인기 게시물

Intel® HAXM installation failed 해결하기

Kotlin Interface

Kotlin this, super