1、什麼是擴充套件?
kotlin提供一種給類增加新功能的能力,卻不需要繼承或者採用設計模式(裝飾者模式)。kotlin支援擴充套件函式2、簡單擴充套件例項:extension functions
和擴充套件屬性extension properties
。
mutablelist是接收者,swap是函式擴充套件。
fun mutablelist.swap(index1: int, index2: int)
val l = mutablelistof(1, 2, 3)
l.swap(0, 2) //給mutablelist擴充套件了`swap`功能
3、擴充套件是靜態完成的,型別是由呼叫的函式靜態決定的
open
class
cclass
d: c
()fun c.foo() = "c"
fun d.foo() = "d"
fun printfoo(c: c)
printfoo(d()) //會呼叫c.foo()
4、類的成員函式名與類的擴充套件函式衝突:
成員函式名與擴充套件函式名相同,使用時會呼叫成員函式。5、「可為空」的接收者可以使用不同引數進行函式過載,就可以通過不同引數呼叫兩種函式。
擴充套件的接收者可以為空,但是需要確定是否為空
。下面的tostring()擴充套件就解釋了為何tostring()不需要判斷空
fun any?.tostring(): string
6、擴充套件屬性的特點:
擴充套件屬性並不是真的在類中插入成員,因此沒有有效的方法使得擴充套件屬性擁有7、可以擴充套件同伴物件的屬性和函式。backing field
。因此擴充套件屬性不允許有擴充套件屬性。
擴充套件屬性的行為只能通過顯式的getter和setter定義
同伴物件擴充套件和一般的同伴物件成員一樣,可以直接通過classname.fun()來呼叫8、擴充套件範圍
一般是直接在最頂層(直接在包下面)定義擴充套件9、將擴充套件作為成員在宣告包之外使用擴充套件,需要import該包或者具體的擴充套件。
宣告擴充套件的類的例項稱為排程接收方,擴充套件方法的接收方型別的例項稱為擴充套件接收方。
kotlin 擴充套件
kotlin允許擴充套件類的屬性和方法,不需要繼承或使用 decorator 模式。擴充套件是一種靜態行為,對被擴充套件的類 本身不會造成任何影響。擴充套件函式定義形式 fun receivertype functionname params 其中,receivertype 為待擴充套件的類名,修飾...
Kotlin 擴充套件
kotlin 可以對乙個類的屬性和方法進行擴充套件,且不需要繼承或使用 decorator 模式。擴充套件是一種靜態行為,對被擴充套件的類 本身不會造成任何影響。擴充套件函式可以在已有類中新增新的方法,不會對原類做修改,擴充套件函式定義形式 fun receivertype functionname...
Kotlin 擴充套件
伴生物件的擴充套件 擴充套件的作用域 擴充套件宣告為成員 endkotlin可以對乙個類的屬性和方法進行擴充套件,且不需要繼承或使用decorator模式。擴充套件是一種靜態行為,對被擴充套件的類 本身不會造成任何影響。擴充套件函式可以在已有類中新增新的方法,不會對原類做修改,擴充套件函式定義形式 ...