Kotlin 2 5 擴充套件

2021-08-13 20:20:45 字數 1399 閱讀 1322

1、什麼是擴充套件?

kotlin提供一種給類增加新功能的能力,卻不需要繼承或者採用設計模式(裝飾者模式)。kotlin支援擴充套件函式extension functions和擴充套件屬性extension properties

2、簡單擴充套件例項:

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、擴充套件屬性的特點:

擴充套件屬性並不是真的在類中插入成員,因此沒有有效的方法使得擴充套件屬性擁有backing field

因此擴充套件屬性不允許有擴充套件屬性。

擴充套件屬性的行為只能通過顯式的getter和setter定義

7、可以擴充套件同伴物件的屬性和函式。

同伴物件擴充套件和一般的同伴物件成員一樣,可以直接通過classname.fun()來呼叫

8、擴充套件範圍

一般是直接在最頂層(直接在包下面)定義擴充套件

在宣告包之外使用擴充套件,需要import該包或者具體的擴充套件。

9、將擴充套件作為成員

宣告擴充套件的類的例項稱為排程接收方,擴充套件方法的接收方型別的例項稱為擴充套件接收方。

kotlin 擴充套件

kotlin允許擴充套件類的屬性和方法,不需要繼承或使用 decorator 模式。擴充套件是一種靜態行為,對被擴充套件的類 本身不會造成任何影響。擴充套件函式定義形式 fun receivertype functionname params 其中,receivertype 為待擴充套件的類名,修飾...

Kotlin 擴充套件

kotlin 可以對乙個類的屬性和方法進行擴充套件,且不需要繼承或使用 decorator 模式。擴充套件是一種靜態行為,對被擴充套件的類 本身不會造成任何影響。擴充套件函式可以在已有類中新增新的方法,不會對原類做修改,擴充套件函式定義形式 fun receivertype functionname...

Kotlin 擴充套件

伴生物件的擴充套件 擴充套件的作用域 擴充套件宣告為成員 endkotlin可以對乙個類的屬性和方法進行擴充套件,且不需要繼承或使用decorator模式。擴充套件是一種靜態行為,對被擴充套件的類 本身不會造成任何影響。擴充套件函式可以在已有類中新增新的方法,不會對原類做修改,擴充套件函式定義形式 ...