參考自官網介紹:
可見性修飾符有四種:private
,protected
,internal
andpublic,預設是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中的類...