Kotlin可見性修飾符


Kotlin中的可見性修飾符是用於限制應用程式中的類,介面,方法和屬性使用的關鍵字。 這些修飾符用於多個位置,例如:類宣告或方法體。

在Kotlin中,可見性修飾符分為四種不同的型別:

  • public
  • protected
  • internal
  • private

1. public 修飾符

可以從專案的任何位置存取public修飾符。 它是Kotlin中的預設修飾符。 如果沒有使用任何存取修飾符指定任何類,介面等,則在public範圍中使用。

public class Example{
}
class Demo{
}
public fun hello()
fun demo()
public val x = 5
val y = 10

所有public宣告都可以放在檔案的頂部。 如果未指定類的成員,則預設為public

2. protected 修飾符

類或介面使用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  
}

3. internal 修飾符

internal修飾符是在Kotlin中新新增的,它在Java中不可用。 宣告要將欄位標記為internal欄位。internal修飾符使欄位僅在實現它的模組內可見。

internal class Example{  
    internal val x = 5  
    internal fun getValue(){  

    }  
}  
internal val y = 10

在上面,所有欄位都宣告為internal,只能在實現它們的模組內部存取。

4. private 修飾符

private修飾符允許宣告僅在宣告屬性,欄位等的塊內可存取。 private修飾符宣告不允許存取範圍外部。可以在該特定檔案中存取私有包。

private class Example {  
    private val x = 1  
     private valdoSomething() {  
    }  
}

在上面的類範例中,val x和函式doSomthing()宣告為private。 可以從同一個原始檔存取類Example,可以在Example類中存取val xfun 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 不可見
}