在Kotlin中四種可見性修飾符:private、protected、internal、public,如果沒有顯示指定修飾符的話,默認可見性是public,
1、包場景下的可見性修飾符
package com.iflytek.basekotlin.`class`
//函式、屬性、類、物件和介面都可以在頂層宣告,即直接在包內 2021/6/22
fun method(){} // 默認為public ,隨處可見 2021/6/22
private class ClassA(){} // 只在該檔案內可見 2021/6/22
private val classA:ClassA = ClassA() // 此處只能用private,因為ClassA只在該檔案內可見,所以其物件也是 2021/6/22
internal interface InterfaceA{} // 只在同模塊內可見 2021/6/22
protected var name:String = "" // 錯誤:Modifier 'protected' is not applicable to 'top level property without backing field or delegate' 2021/6/22
- 如果不指定任何可見性修飾符,默認為public,這意味著隨處可見
- 如果宣告為private,只在宣告的檔案內可見
- 如果宣告為internal,只在相同的模塊內可見
- protected不適用于頂層宣告,即不適用于此場景
2、類內部宣告的成員
open class VisibilityDemo{
private val a = true // 只在該類內部可見 2021/6/22
protected val b = true // 在類內部和其子類中可見 2021/6/22
internal val c = true // 能見到類宣告的本模塊任何客戶端都可見 2021/6/22
val d = true // 能見到類宣告的任何客戶端都可見 2021/6/22
}
class SubVisibility:VisibilityDemo(){
fun visible(){
//println(a) // 不可見 2021/6/22
println(b) // 可見 2021/6/22
println(c) // 可見 2021/6/22
println(d) // 可見 2021/6/22
}
}
class UnRelated(){
fun visible(visibilityDemo: VisibilityDemo){
// println(visibilityDemo.a) // 不可見 2021/6/22
// println(visibilityDemo.b) // 不可見 2021/6/22
println(visibilityDemo.c) // 可見 2021/6/22
println(visibilityDemo.d) // 可見 2021/6/22
}
}
- private 只在類內部可見
- protected 在類及其子類中可見
- internal 能見到類宣告的本模塊內可見
- public 能見到類宣告處可見
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/355362.html
標籤:其他
