5.6 kotlin課堂 :擴展函數和運算符重載
5.6.1擴展函數
拓展函數 : 表示即使在不修改某個類的源代碼的情況下,仍然可以打開這個類,向該類中添加新函數。
拓展函數的語法結構:
fun ClassName.methodName(param1 :Int,param2 :Int):Int{
return 0
}
示例代碼:
/**
* 將letterCount()方法定義成String類的拓展函數
* 函數會自動擁有String 實例的上下文
*/
fun String.letterCount():Int{
var count = 0
for(char in this){
if(char.isLetter()){
count++
}
}
return count
}
fun main() {
val count="Adsasvcw25156a1d3w".letterCount()
println(count)
}
拓展函數的作用:多數情況下,可以讓API變得更加簡潔豐富,更加面向對象。
5.6.2 運算符重載
Kotlin的運算符重載允許我們讓任意鏈兩個對象進行相加,或者是進行更多其他的運算符重載。
運算符重載使用的是operator關鍵字,在指定函數的前面加上operator關鍵字就可以實現運算符重載的功能。
對兩個對象進行相加操作
class Money(val value:Int) {
operator fun plus(money: Money):Money{
val sum=value+money.value
return Money(sum)
}
}
fun main() {
val money1=Money(100)
val money2=Money(400)
val money3 =money1+money2
val money4=money1.plus(money2)
println("${money1.value} + ${money2.value} =${money3.value}-----${money4.value}")
}
因爲kotlin允許我們對同一個運算符進行多重重載,所以可以實現上述代碼中的Money類可以直接和數字相加。