[Kotlin/코틀린] 클래스 확장

SoyoungLee·2021년 4월 5일
0
post-thumbnail

💌 클래스 확장

📌 확장의 원리

💜 확장이란?

  • 클래스 내에 함수와 프로퍼티 선언
fun class명.확장함수명()

📌 프로퍼티와 컴패니언 오브젝트 확장

프로퍼티 확장

  • get) 함수로만 초기화

💜 컴패니언 오브젝트의 확장

  • companion
class Test{
    companion object{
        val data1: Int = 10
        fun myFun1(){
            println("companion object myFun1()...")
        }
    }
}
val Test.Companion.data2: Int
    get() = 20

fun Test.Companion.myFun2(){
    println("extension myFun2()...")
}

fun main(args: Array<String>){
    println("data1 : ${Test.data1}.. data2 : ${Test.data2}")
    Test.myFun1()
    Test.myFun2()
}

🖥
data1 : 10.. data2 : 20
companion object myFun1()...
extension myFun2()...

📌 확장 구문의 위치에 따른 이용

💜 최상위 레벨에 작성

  • 외부파일에서 이용할 때는 별도로 import

💜 다른 클래스 내에 작성

  • 확장 대상 : 익스텐션 클래스 (Extension Receiver)
  • 확장 구문 작성 : 디스패치 클래스 (Dispatch Receiver)
    -> 디스패치 리시버 내에 선언된 익스텐션 리시버의 확장 함수는 디스패치/익스텐션 리시버 내의 함수에 모두 접근 가능
profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글