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 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 不可見
}