heylo 2025. 1. 24. 17:48

 

1) 확장 함수

Extension Function 기존에 정의되어 있는 클래스에 함수를 추가하는 기능

fun main() {
    // 확장함수 Extension Function
    // 기존에 정의되어 있는 클래스에 함수를 추가하는 기능

    val test = Test()
    Test().hello()

    // 추가한 함수 호출
    test.hi()

}

// 만약 Test 클래스가, 라이브러리에서 임포트 돼서
// 수정할 수 없는 클래스라면
class Test() {
    fun hello() = println("안녕")
    fun bye() = println("잘가")
}

// 클래스에 함수 추가
fun Test.hi() = println("하이")

 

 

2) 확장 함수의 편리성

TestView 에서 원하는 함수를 추가하고 싶을 때,

JAVA 였다면, 테스트뷰 라는 것을 상속 받는 우리만의 커스텀 TestView 만들고

그 안에 쓰고 싶은 기능을 function 으로 넣는다

  1. 커스텀한 테스트뷰를 만들어야 하고
  2. 커스텀한 테스트뷰 에서만 원하는 함수를 호출할 수 있음
  3. 코드도 길어지고
  4. 커스텀한 함수를 사용하고 싶은 테스트뷰는 모두 커스텀테스트뷰로 바꿔야하는 불편함

확장함수는 위와 같은 기존 불편함을 해결해주는 강력한 도구