Kotlin 学习之可见性修饰符
来源:互联网 发布:魔灵召唤无法连接网络7 编辑:程序博客网 时间:2024/05/18 02:08
可见性修饰符
类,对象,接口,构造函数,属性以及它们的 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 // property is visible everywhere private set // setter is visible only in example.ktinternal val baz = 6 // visible inside the same 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 by default protected class Nested { public val e: Int = 5 }}class Subclass : Outer() { // a is not visible // b, c and d are visible // Nested and e are visible override val b = 5 // 'b' is protected}class Unrelated(o: Outer) { // o.a, o.b are not visible // o.c and o.d are visible (same module) // Outer.Nested is not visible, and Nested::e is not visible either }
构造函数
通过下面的语法来指定主构造函数(必须显示的使用 constructor
关键字)的可见性:
class C private constructor(a: Int) { ... }
这里构造函数是 private
。所有的构造函数默认是 public
,实际上只要类是可见的它们就是可见的 (注意 internal
类型的类中的 public
属性只能在同一个模块内才可以访问)
局部声明
局部的变量,函数和类是不允许使用修饰词的
模块
internal
修饰符是指成员的可见性是只在同一个模块中才可见的。模块在 Kotlin中就是一系列的 Kotlin 文件编译在一起:
* an IntelliJ IDEA module;
* a Maven project;
* a Gradle source set;
* a set of files compiled with one invocation of the Ant task.
阅读全文
0 0
- Kotlin 学习之可见性修饰符
- Kotlin 官方学习教程之可见性修饰符
- Kotlin 可见性修饰符
- Kotlin学习笔记(五)接口,可见性修饰符
- Kotlin-2.4-可见性修饰符
- 学习kotlin第八天_接口、可见性修饰符、扩展
- Kotlin 从学习到 Android 第九章 可见性修饰符
- Kotlin学习(十): 可见性修饰符和数据类
- Kotlin学习之-5.4 可见性描述符
- Kotlin-11.可见性修饰符(Visibility Modifiers)
- Kotlin类和对象 (四)--- 可见性修饰符
- Kotlin基础(一) 常量、变量、可见性修饰符
- 可见性修饰符
- Kotlin 中的操作符重载汇总表 与 可见性修饰符总结
- Kotlin最简单的入门教程——可见性修饰符,扩展,数据类,密封类
- Kotlin Reference (八) 可见性修饰符, data class,object Claz
- [kotlin系列] (s2_2)属性、字段、接口、可见性修饰
- Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展
- Tour UVA
- hdu 6201 transaction transaction transaction tree dp
- random产生随机数
- angular4中的模块预加载的控制和实现
- PASCAL VOC 2012
- Kotlin 学习之可见性修饰符
- 经验分享之在CentOS 7上搭建SVN服务器
- easyui datagrid 获取多条选中的数据进行操作
- sublime text 3 Three are no packages available
- datagrid 对当前行进行修改和保存
- JS跨域请求的四种处理方式
- bzoj2565 最长双回文串
- 使用nohup让linux命令在后台运行
- 1792:迷宫(2.5基本算法之搜索)