Kotlin 문법: "클래스 확장"

SHY(code poet)·2024년 2월 20일

✨Kotlin에 관하여✨ 

목록 보기
21/36

● 클래스의 확장: 익스텐션 ⇒ 기능추가

fun 클래스.확장할 메서드(){ // 이미 만들어져 있는 클래스에 메서드 추가
// 코드 // 이 메서드 사용할 때에는 .(연산자)메서드 함께 써줄 것!!
}

  • Kotlin은 클래스, 메서드, 프로퍼티에 대해 익스텐션(Extension)을 지원한다.
  • 이미 만들어져 있는 클래스에 위와 같은 형태로 메서드를 추가할 수 있다.
  • 상속이 미리 만들어져 있는 클래스를 가져다 쓰는 개념이라면 익스텐션은 미리 만들어져 있는 클래스에 메서드를 넣는 개념이다.
  • 자신이 만든 클래스에 사용하기보다는 누군가 작성해둔, 이미 컴파일되어 있는 클래스에 메서드를 추가하기 위한 용도로 사용하는 것이 좋다.
  • 익스텐션을 사용한다고 해서 실제 클래스의 코드가 변경되는 것은 아니며 단지 실행 시에 도트 연산자로 호출해서 사용할 수 있도록 해준다.
    -특별한 경우를 제외하고는 거의 메서드 확장 용도로 사용된다.
  • 다음 예제는 기본 클래스인 String에 plus 메서드를 확장하는 전체 코드. test 메서드 안에 선언한 original에 문자열을 입력했기 때문에 original은 String의 익스텐션 메서드인 plus를 호출해서 사용할 수 있다.

package net.flow9.thisiskotlin.basicsyntax

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    testStringExtension()
}

// String 익스텐션 테스트 하기
fun testStringExtension() {
    var original = "Hello"
    var added = " Guys~"
    // plus 함수를 사용해서 문자열을 더할 수 있다.
    Log.d("Extension", " added를 더한값은 ${original.plus(added)}입니다") 
}

}

fun String.plus(word: String): String {
return this + word
}

/* [로그캣 출력 내용]
added를 더한 값은 Hello Guys~입니다.
/

profile
진정한 개발자는 코드를 두려워하지 않는다. 오히려 코드가 그를 두려워한다.

0개의 댓글