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

上一篇:Kotlin构造函数

下一篇:Kotlin继承

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程