Kotlin筆記4 可見性修飾符和擴充套件函式

2021-08-22 03:29:07 字數 1304 閱讀 4921

參考自官網介紹:

可見性修飾符有四種:private,protected,internalandpublic,預設是public

可以用於修飾類、伴生物件object、介面、建構函式、一般函式、屬性和其setter方法,getter方法和其屬性可見性一致。

internal修飾的,是module內可見,對應於android studio中的乙個module。

protected不能同於頂級宣告,即直接在乙個package中宣告,其宣告的可對於子類可見。

⚠️注意:區域性變數,區域性方法,區域性類(?什麼叫local classes)不能有visibility modifiers

類似於c#,擴充套件函式可以在不繼承乙個類,以及不使用任何設計模式(如裝飾者模式)的的前提下,擴充套件乙個類的功能。在函式名前加乙個接受者型別,和乙個點 ,例如為mutablelist類擴充套件乙個swap方法

fun mutablelist.swap(index1: int, index2: int)
其中,this表示接收者的型別,現在可以如下呼叫

val l = mutablelistof(1, 2, 3)

l.swap(0, 2) // 'this' inside 'swap()' will hold the value of 'l'

通過使用范型,可以在改變後,用於所有型別,如下:

fun mutablelist.swap(index1: int, index2: int)
通過在函式名稱前新增范型型別t,可以在接受者型別中使用該范型t

當類已經有乙個和擴充套件函式同名的函式時,在呼叫該函式時,會呼叫成員函式的方法,引數列表不一致時除外。

和擴充套件函式一樣,kotlin支援擴充套件屬性,以簡化**的編寫。

val list.lastindex: int

get() = size - 1

⚠️注意:

只能通過提供getters/setters的方式來定義擴充套件屬性。

val foo.bar = 1 // error: initializers are not allowed for extension properties

kotlin 可見性修飾符

人要每天給自己找點事幹,無所事事會毀掉乙個人,對於類 方法,介面,構造器,方法,屬性和他們的setter方法都可以有可見性的修飾符,在kotlin中有四種修飾符,private,protected,internal,public,如果沒有說明預設的是public public 修飾符指的是屬性或者是...

Kotlin學習(11) 可見性修飾符

1 應用域 類 物件 介面 建構函式 方法 屬性和它們的setter都可以有可見性修飾符。在kotlin中有四個可見性修飾符 如果沒有顯式指定修飾符的話,預設可見性都是public。2 包名 函式 屬性和類 物件和介面可以在頂層宣告,即直接在包內 package foofun baz class b...

Java中訪問修飾符的可見性

private 只能由定義實體的類中包含的 訪問。protected 只能由以下範圍內的 訪問 1.定義實體的類 2.相同package中和定義類一樣的類 3.定義類的子類,不管子類在哪個package中定義。預設 實體可以由以下範圍內的 訪問 1.定義實體的類 2.定義在同乙個package中的類...