当前位置:嗨网首页>书籍在线阅读

04-访问权限

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.2.3 访问权限

和Java一样,Kotlin也对变量和属性的访问权限进行了区分。除了默认访问权限public之外,Kotlin的权限修饰符还包括protected、private和internal。区别于Java的访问权限,Kotlin提供了一个新的internal权限,使用internal定义的对象,同一模块是可以相互访问的。

在Kotlin中,每个声明的变量和属性都有get和set方法,可以根据需要来决定是否需要实现get和set方法,如果声明的变量和属性不想被外部访问,可以使用private修饰符。代码如下。

var name: String = ""
private set

但是这种方式只适用于set方法,get方法的访问权限默认和属性是一致的,如果人为地修改get方法的访问权限就会报错。代码如下。

var name: String = ""
private get         // 编译报错,get方法的访问权限和属性默认权限不一致

如果重载一个成员函数但是并没有显示指定修饰符,则重载函数默认会拥有protected权限。代码如下。

open class Outer {
      private val a = 1
      protected open val b = 2
      internal val c = 3
      val d = 4      
      protected class Nested {
            public val e: Int = 5
      }
}
class Subclass : Outer() {
      override val b = 5     // b为protected类型
}
class Unrelated(o: Outer) {
     …
}

一般来说,所有的构造函数默认都是public的,但是为了限制访问权限,也可以给构造函数指定修饰符,例如,将构造函数指定为私有的。

class C private constructor(a: Int) { … }