📅  最后修改于: 2021-01-05 07:58:59             🧑  作者: Mango
可见性修饰符是关键字,用于限制应用程序中Kotlin的类,接口,方法和属性的使用。这些修饰符可在多个地方使用,例如类标题或方法主体。
在Kotlin中,可见性修改器分为四种不同类型:
可从项目中的任何地方访问public修饰符。它是Kotlin中的默认修饰符。如果未使用任何访问修饰符指定任何类,接口等,则该类,接口等将在公共范围内使用。
public class Example{
}
class Demo{
}
public fun hello()
fun demo()
public val x = 5
val y = 10
所有公共声明都可以放在文件顶部。如果未指定class的成员,则默认情况下为public。
具有类或接口的受保护修饰符仅允许对其类或子类可见。除非显式更改其子类中的受保护的声明(在重写时),否则它也是受保护的修饰符。
open class Base{
protected val i = 0
}
class Derived : Base(){
fun getValue() : Int
{
return i
}
}
在Kotlin中,不能在顶层声明protected修饰符。
open class Base{
open protected val i = 5
}
class Another : Base(){
fun getValue() : Int
{
return i
}
override val i =10
}
内部修饰符是Kotlin中新添加的,在Java中不可用。声明任何内容都会将该字段标记为内部字段。内部修饰符使该字段仅在实现它的模块内部可见。
internal class Example{
internal val x = 5
internal fun getValue(){
}
}
internal val y = 10
在上面,所有字段都声明为内部字段,这些字段只能在实现它们的模块内部访问。
私有修饰符仅允许在声明属性,字段等的块内访问该声明。 private修饰符声明不允许访问范围的外部。可以在该特定文件中访问私有软件包。
private class Example {
private val x = 1
private valdoSomething() {
}
}
在上面的示例Example中,val x和函数doSomthing()被声明为private。可以从同一源文件访问“示例”类,在示例类中可以访问“ val x”和“ fun doSomthing()”。
open class Base() {
var a = 1 // public by default
private var b = 2 // private to Base class
protected open val c = 3 // visible to the Base and the Derived class
internal val d = 4 // visible inside the same module
protected fun e() { } // visible to the Base and the Derived class
}
class Derived: Base() {
// a, c, d, and e() of the Base class are visible
// b is not visible
override val c = 9 // c is protected
}
fun main(args: Array) {
val base = Base()
// base.a and base.d are visible
// base.b, base.c and base.e() are not visible
val derived = Derived()
// derived.c is not visible
}