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