파게로그

[OOP] Extension Function 본문

콤퓨타 왕기초/Kotlin

[OOP] Extension Function

파게 2021. 6. 13. 18:11

새로운 기능을 추가하여 클래스를 확장한다고 생각해보면, 새로운 클래스를 derive하거나, 특정한 디자인 패턴을 사용해야만 한다. 하지만 Kotlin에서는, 새로운 기능을 추가하여 클래스를 확장하기 위해서 extension function을 사용할 수 있다. 기본적으로 extension function이란, 클래스의 외부에 정의된, member function이다.

예를 들어, 어떤 문자열에 대해서 첫 번째와 마지막 문자가 제거된 새로운 문자열을 반환하는 메서드를 사용해야 하는 상황이라면, 이 메서드는 String 클래스에 미리 존재하는 메서드가 아니다. 이 때 해당 업무 수행을 위해 extension function을 사용할 수 있다.

 

fun String.removeFirstLastChar(): String = this.substring(1, this.length - 1)

fun main(args: Array<String>) {
    val greeting = "Hello everyone!"
    val result = greeting.removeFirstLastChar()
    println(greeting)
}

여기서 String 클래스에 removeFirstLastChar()이라는 extension function이 추가된 것을 볼 수 있다.

클래스명의 경우 receiver type으로서 위의 예시에서는 String 클래스이며, extension function 내의 this 키워드는 receiver object를 참조한다.

만약 Kotlin을 Java 프로젝트 위에 통합시키고 싶다면 Kotlin의 모든 코드를 수정할 필요는 없다. 단순히 기능성을 더하기 위해 extension functions를 사용하면 되는 것이다.

다시 말하자면 extension functions의 힘을 남용하는 것 또한 쉽기도 하다. extension functions를 사용해야 할 때와 사용하지 말아야 할 때를 알기 위해서 추가적인 학습을 권장한다.

 

 

 

 

'콤퓨타 왕기초 > Kotlin' 카테고리의 다른 글

[Basic] package  (0) 2021.06.15
[OOP] 연산자 오버로딩  (0) 2021.06.13
[OOP] Object, singleton pattern  (0) 2021.06.13
[OOP] Sealed Classes  (0) 2021.06.13
[OOP] Data Class  (0) 2021.06.13
Comments