Kotlin 함수 확장

1774 단어 androidKotlin
자바 와 달리 Kotlin 은 하나의 속성 과 방법 을 확장 할 수 있 습 니 다.
1.확장 함수 의 정의 형식
fun functionType.functionName(params){
       함수 체
}
functiontype:함수 의 대상 을 확장 하려 면 함수 의 수신 자 를 표시 합 니 다.
functionName:확장 함수 의 이름
params:확장 함수 의 인자
class Animation(var name: String) 

/**
 *     :           ,        
 */
fun Animation.Print() {
    println("   :${name}")
    println("    ")
}
fun main(args: Array) {
    var animation = Animation("Kotlin")
    animation.Print()
}

   :Kotlin
    

2.동반 대상 의 확장
만약 하나의 클래스 정의 에 반생 대상 이 있다 면,당신 도 반생 대상 에 확장 함수 와 속성 을 정의 할 수 있 습 니 다.
반생 대상 은'클래스 이름'형식 으로 반생 대상 을 호출 하고 반생 대상 성명 의 확장 함 수 는 클래스 이름 한정 부호 로 호출 합 니 다.
class MyClass {
    companion object {}
}

fun MyClass.Companion.foo() {
    println("         ")
}

val MyClass.Companion.no: Int  //    
    get() = 100

fun main(args: Array) {
    println("no:${MyClass.no}")
    MyClass.foo()
}

no:100
         

속성 에 대한 확장 이 있 습 니 다:
           Kotlin   ,         ,      ,      getter 、setter  ,            val

3.한 종류의 내부 에서 다른 종류의 성명 으로 확장 할 수 있 습 니 다.
***
 *                   
 *       ,         ,
 *                      
 *                   
 */
class P {
    fun bar() {
        println("P bar")
    }
}

class O {
    fun baz() {
        println("O baz")
    }

    // O    P      ,        ,         O    ,              P     
    fun P.foo() {
        bar() //
        baz()
    }

    fun caller(p: P) {
        p.foo()  //      
    }
}
fun main(args: Array) {
    val p: P = P()
    val o: O = O()
    o.caller(p)
}
P bar
O baz

좋은 웹페이지 즐겨찾기