Kotlin 可见性修饰符
2017-07-11 11:48
316 查看
地址:http://kotlinlang.org/docs/reference/visibility-modifiers.html
日期:2017-07-11
译者:Linky
都和属性的可见性相同)。Kotlin 中有四个可见性修饰符:
如果没有显式添加,则默认为
—— 如果不指定可见性,默认是 public,也就是说你的声明可以在任何地方可见;
—— 如果用 private 修饰一个属性,那么该属性只能在包含该声明的文件内部可见;
—— 如果用 internal 修饰一个属性,那么该属性在相同的 module 中可见;
—— 在 顶层声明中,不能用 protected 修饰;
例如:
—— private 意味着 只在类内可见
—— protected 意味着 类内 + 子类中可见
—— internal 在 module 内部的任意 client,如果可访问声明的 类,那么也可以访问该类的 internal 成员
—— public 任意 client,如果可访问声明的类,那么也可见它的 public 成员
注意:对于 Java 用户来说,外部类不能访问 Kotlin 内部类的私有成员。
如果你继承了一个 protected 成员,同时没有指定它的可见性,那么默认重载的成员也有 protected 的可见性
在这里,构造器是 private 的。默认情况下,所有的构造器都是 public 的,
internal 声明的 class 只在相同的 module 中可见。
一个 module 就是一组 Kotlin 文件编译在了一起。
—— 一个 Intellij IDEA 模块;
—— 一个 Maven 项目;
—— 一个 Gradle 文件集合;
—— 一组被 Ant 任务编译的文件;
日期:2017-07-11
译者:Linky
可见性修饰符
类、对象、接口、构造器、函数、属性和他们的setters方法都可以用 可见性修饰符 修饰(Getters 通常
都和属性的可见性相同)。Kotlin 中有四个可见性修饰符:
private、
protected、
internal和
public。
如果没有显式添加,则默认为
public。
包
函数、属性 和 类、对象以及接口都可以在 顶层 声明,例如,直接在包中声明package foo fun baz() {} class Bar {}
—— 如果不指定可见性,默认是 public,也就是说你的声明可以在任何地方可见;
—— 如果用 private 修饰一个属性,那么该属性只能在包含该声明的文件内部可见;
—— 如果用 internal 修饰一个属性,那么该属性在相同的 module 中可见;
—— 在 顶层声明中,不能用 protected 修饰;
例如:
package foo private fun foo() {} // visible inside example.kt public var bar: Int = 5 // property is visible everywhere private set // setter is visible only in example.kt internal val baz = 6 // visible inside the same module
类 和 接口
对于声明在 类 中的成员—— private 意味着 只在类内可见
—— protected 意味着 类内 + 子类中可见
—— internal 在 module 内部的任意 client,如果可访问声明的 类,那么也可以访问该类的 internal 成员
—— public 任意 client,如果可访问声明的类,那么也可见它的 public 成员
注意:对于 Java 用户来说,外部类不能访问 Kotlin 内部类的私有成员。
如果你继承了一个 protected 成员,同时没有指定它的可见性,那么默认重载的成员也有 protected 的可见性
open class Outer { private val a = 1 protected open val b = 2 internal val c = 3 val d = 4 // 默认为 public protected class Nested { public val e: Int = 5 } } class Subclass : Outer() { // a 不可见 // b,c 和 d 是可见的 // Nested类 和 e 是可见的 override val b = 5 // 'b' is protected } class Unrelated(o: Outer) { // o.a, o.b 是不可见的 // o.c 和 o.d 是可见的(相同的 module) // Outer.Nested 不可见,Nested::e 也不可见 }
构造器
为了声明一个类的基本构造器的可见性,使用下面的语法:(需要显式地使用 constructor 关键字)class C private constructor(a: Int) { ... }
在这里,构造器是 private 的。默认情况下,所有的构造器都是 public 的,
internal 声明的 class 只在相同的 module 中可见。
局部声明
局部变量,函数和类不能有 可见性修饰符模块
internal 可见性修饰符意味着相同 module 中的成员可见。具体来说,一个 module 就是一组 Kotlin 文件编译在了一起。
—— 一个 Intellij IDEA 模块;
—— 一个 Maven 项目;
—— 一个 Gradle 文件集合;
—— 一组被 Ant 任务编译的文件;
相关文章推荐
- Kotlin学习(11):可见性修饰符
- Kotlin-2.4-可见性修饰符
- Kotlin学习(十): 可见性修饰符和数据类
- 学习kotlin第八天_接口、可见性修饰符、扩展
- Kotlin 官方学习教程之可见性修饰符
- Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展
- Kotlin 学习之可见性修饰符
- Kotlin基础(一) 常量、变量、可见性修饰符
- Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展
- Kotlin Reference (八) 可见性修饰符, data class,object Claz
- Kotlin 中的操作符重载汇总表 与 可见性修饰符总结
- Kotlin 从学习到 Android 第九章 可见性修饰符
- Kotlin-可见性修饰符
- Kotlin_可见修饰符
- [kotlin系列] (s2_2)属性、字段、接口、可见性修饰
- Java可见性修饰符与参数传递
- Kotlin系列之继承相关修饰符
- Kotlin -- 访问控制修饰符
- Kotlin学习笔记(五)接口,可见性修饰符
- kotlin中的修饰符