Kotlin
中的可見性修飾符是用於限制應用程式中的類,介面,方法和屬性使用的關鍵字。 這些修飾符用於多個位置,例如:類宣告或方法體。
在Kotlin中,可見性修飾符分為四種不同的型別:
public
protected
internal
private
可以從專案的任何位置存取public
修飾符。 它是Kotlin中的預設修飾符。 如果沒有使用任何存取修飾符指定任何類,介面等,則在public
範圍中使用。
public class Example{
}
class Demo{
}
public fun hello()
fun demo()
public val x = 5
val y = 10
所有public
宣告都可以放在檔案的頂部。 如果未指定類的成員,則預設為public
。
類或介面使用protected
修飾符僅允許對其類或子類進行可見性。 除非明確更改,否則子類中的protected
宣告在被重寫時也是protected
修飾符。
open class Base{
protected val i = 0
}
class Derived : Base(){
fun getValue() : Int
{
return i
}
}
在Kotlin中,protected
修飾符不能在頂層宣告。
覆蓋protected的型別
open class Base{
open protected val i = 5
}
class Another : Base(){
fun getValue() : Int
{
return i
}
override val i =10
}
internal
修飾符是在Kotlin中新新增的,它在Java中不可用。 宣告要將欄位標記為internal
欄位。internal
修飾符使欄位僅在實現它的模組內可見。
internal class Example{
internal val x = 5
internal fun getValue(){
}
}
internal val y = 10
在上面,所有欄位都宣告為internal
,只能在實現它們的模組內部存取。
private
修飾符允許宣告僅在宣告屬性,欄位等的塊內可存取。 private
修飾符宣告不允許存取範圍外部。可以在該特定檔案中存取私有包。
private class Example {
private val x = 1
private valdoSomething() {
}
}
在上面的類範例中,val x
和函式doSomthing()
宣告為private
。 可以從同一個原始檔存取類Example
,可以在Example
類中存取val x
和fun doSomthing()
。
open class Base() {
var a = 1 // 預設為 public
private var b = 2 // 基礎類別 private
protected open val c = 3 // Base和Derived類可見
internal val d = 4 // 在同一個模組中可見
protected fun e() { } // Base和Derived類可見
}
class Derived: Base() {
// a, c, d, 和 e() 基礎類別可見
// b 是不可見
override val c = 9 // c 為 protected
}
fun main(args: Array<String>) {
val base = Base()
// base.a 和 base.d 可見
// base.b, base.c 和 base.e() 不可見
val derived = Derived()
// derived.c 不可見
}