[Kotlin] 확장 함수(Extension Function)

오리너구리·2024년 5월 28일
0

개발 공부 정리

목록 보기
5/9
post-thumbnail

확장 함수란?

기존 클래스에 함수를 추가하는 것.

기존 클래스의 정의를 변경하지 않고도 클래스의 일부인 것처럼 메서드를 호출할 수 있게 해준다.

확장 함수 정의 하는 방법

확장 함수를 선언하려면 함수 이름 앞에 수신 객체 타입(receiver type)을 붙인다.

fun 객체타입.함수이름(매개변수:매개변수타입 ...) : 반환타입 {

//실행할 코드

}

예시
MutableList<Int>swap 함수를 추가

fun MutableList<Int>.swap(index1: Int, index2: Int) {
    val tmp = this[index1]  // 'this'는 리스트를 가리킵니다.
    this[index1] = this[index2]
    this[index2] = tmp
}

val list = mutableListOf(1, 2, 3)
list.swap(0, 2)  // 'swap()' 안의 'this'는 'list'를 가리킵니다.

사용하는 때

  1. 수정할 수 없는 서드파티 라이브러리 클래스에 새로운 기능을 확장하고 싶을 때
  2. 기존 기본 클래스에 함수 추가하고 싶을 때

특징

  1. 확장 함수의 이름이 멤버 함수와 이름이 같으면 매개 함수가 먼저 실행된다.
  2. 확장 함수는 override 될 수 없다.
  3. 확장 함수는 멤버의 제한자가 private 혹은 protected 인 경우 접근 불가능하다.
profile
오리너구리입니다

0개의 댓글