728x90
익스텐션 함수는 Kotlin의 강력한 기능 중 하나로, 기존 클래스에 새로운 메서드를 추가하는 것처럼 사용할 수 있습니다. 이 기능은 클래스의 정의를 변경하지 않고도 클래스의 기능을 확장하게 해줍니다.
- 익스텐션 함수의 선언
익스텐션 함수는 "클래스명.함수명"의 형태로 선언됩니다. 함수 내부에서 this
키워드를 사용하면 해당 클래스의 인스턴스를 가리킵니다.
예제:
fun String.hello(): String {
return "Hello, $this!"
}
println("Kotlin".hello()) // 출력: Hello, Kotlin!
이 예제에서 String
클래스에 hello
익스텐션 함수를 추가했습니다. this
는 String
인스턴스를 가리키며, "Kotlin".hello()
를 호출하면 "Hello, Kotlin!"이 출력됩니다.
- 익스텐션 함수와 멤버 함수
만약 클래스의 멤버 함수와 동일한 시그니처를 가진 익스텐션 함수가 있을 경우, 멤버 함수가 우선순위를 가집니다. 이는 익스텐션 함수가 멤버 함수를 오버라이드할 수 없기 때문입니다.
예제:
class MyClass {
fun foo() {
println("Member function")
}
}
fun MyClass.foo() {
println("Extension function")
}
val myClass = MyClass()
myClass.foo() // 출력: Member function
이 예제에서 MyClass
에 foo
멤버 함수와 foo
익스텐션 함수가 있습니다. myClass.foo()
를 호출하면 멤버 함수가 실행됩니다.
익스텐션 함수는 기존 클래스를 수정하지 않고도 클래스의 기능을 확장하는 강력한 도구입니다. 이를 통해 코드의 재사용성과 가독성을 향상시킬 수 있습니다.
728x90