Kotlin 官方学习教程之可见性修饰符
来源:互联网 发布:java http请求框架 编辑:程序博客网 时间:2024/05/22 11:46
可见性修饰符
类,对象,接口,构造函数,属性以及它们的 setter 方法都可以有可见性修饰词。( getter 总是具有与该属性相同的可见性。)。在 Kotlin 中有四种修饰词:private,protected,internal,以及 public 。默认的修饰符是 public。
下面请查看不同类型声明范围的说明。
包
函数,属性和类,对象和接口可以在 “top-level” 声明,例如直接定义在一个包内:
// file name: example.ktpackage foofun baz() {}class Bar {}
如果您没有指定任何可见性修饰符,则默认使用 public,这意味着您的声明将在任何位置都可见;
如果你声明为 private ,则只在包含声明的文件中可见;
如果用 internal 声明,则在同一模块中的任何地方可见;
protected 在 “top-level” 中不可以使用
例子:
// file name: example.ktpackage fooprivate fun foo() {} // visible inside example.ktpublic var bar: Int = 5 // 属性在任何地方可见 private set // setter 方法只在 example.kt 文件内可见internal val baz = 6 // 在同一个 module 内可见
类和接口
对于在类中声明的成员:
private 只在该类(以及它所有的成员)中可见
protected 和 private 一样,但在子类中也可见
internal 在本模块的所有可以访问到声明区域的均可以访问该类的所有 internal 成员
public 任何地方可见
java 使用者注意:外部类不可以访问内部类的 private 成员。
如果重写 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' 是 protected 型}class Unrelated(o: Outer) { // o.a, o.b 是不可见的 // o.c and o.d 是可见的 (在同一个 module 内) // Outer.Nested 是不可见的, and Nested::e 也是不可见的}
构造函数
要指定类的主构造函数的可见性,请使用以下语法(请注意,您需要添加一个显式 constructor 关键字):
class C private constructor(a: Int) { ... }
这里构造函数是 private 。所有的构造函数默认是 public ,实际上只要类是可见的它们就是可见的 (注意 internal 类型的类中的 public 属性只能在同一个模块内才可以访问).
局部变量
局部变量,函数和类不能有可见性修饰符。
模块
internal 修饰符是指成员的可见性是只在同一个模块中才可见的。模块在 Kotlin 中就是一系列的 Kotlin 文件编译在一起:
an IntelliJ IDEA module;
a Maven or Gradle project;
a set of files compiled with one invocation of the Ant task.
- Kotlin 官方学习教程之可见性修饰符
- Kotlin 学习之可见性修饰符
- Kotlin 可见性修饰符
- Kotlin学习笔记(五)接口,可见性修饰符
- Kotlin-2.4-可见性修饰符
- 学习kotlin第八天_接口、可见性修饰符、扩展
- Kotlin 从学习到 Android 第九章 可见性修饰符
- Kotlin学习(十): 可见性修饰符和数据类
- Kotlin学习之-5.4 可见性描述符
- Kotlin-11.可见性修饰符(Visibility Modifiers)
- Kotlin类和对象 (四)--- 可见性修饰符
- Kotlin基础(一) 常量、变量、可见性修饰符
- kotlin 官方学习教程之基础语法
- kotlin 官方学习教程之语法
- kotlin 官方学习教程之基本类型
- kotlin 官方学习教程之编码风格
- kotlin 官方学习教程之包
- Kotlin 官方学习教程之控制流
- 图书管理系统2
- 2017第八届浪潮杯山东省赛 A.Return of the Nim 博弈
- HPU2016级暑期集训选拔赛 【题解】
- 从零开始学_JavaScript_系列(38)——对象的扩展(1)属性的简洁写法
- php设计模式之策略模式
- Kotlin 官方学习教程之可见性修饰符
- 抽象类和接口的区别
- 指针常量和常量指针
- 【LaTeX试卷】天津大学仁爱学院高等数学试卷 LaTeX模板
- 详解https是如何确保安全
- 使用ThreadLocal变量的时机和方法
- php常用函数
- mobiscroll用法
- 从零开始学_JavaScript_系列(39)——对象的扩展(2)Object对象的扩展方法