Kotlin学习之-5.4 可见性描述符
来源:互联网 发布:htpc 用什么软件 编辑:程序博客网 时间:2024/05/21 22:38
Kotlin学习之-5.4 可见性描述符
类,对象,接口,构造函数,函数,属性以及他们的setter可以用可见性描述符来修改其可见性。getter方法的可见性通常和属性的可见性一致。Kotlin中有4中可见性描述符:private
, protected
, internal
和public
。如果没有显示写描述符,那么默认可见性是public
的。
下面是各种不同定义范围的解释。
包
函数,属性和类,对象和接口可以在顶级声明,例如,直接在包中声明
//file name: example.ktpackage foofun baz() {}class Bar {}
- 如果不指定任何可见性描述符的话,默认使用的是
pubic
, 意味着定义会在所有地方都可见 - 如果指定是
private
的,它只会在定义域内可见。 - 如果指定是
internal
的,它会在module
中的所有地方可见。 protected
不能用在顶级的定义
例如:
//file name: example.ktpackage fooprivate fun foo() {} // example.kt 中可见public var bar: Int = 5 // 全局可见 private set // setter 仅在example.kt 中可见internal val baz = 6 // 在同module 中可见
类和接口
对于类中定义的成员:
private
意味着仅在这个类范围内可见(包括所有的成员)protected
包括private
的可见性,并且在子类中可见。internal
在modele
中能够给看到类定义的部分,都可以看到internal
的成员public
任何可以看到类定义的部分,都可以看到public
的成员
Java用户需要注意:在Kotlin中,外部类无法看到内部类的私有
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) { // ...}
这里的构造器是私有的。默认情况下,所有的构造器都是共有的public
,这样当类可见时,它的构造器也是默认可见的。注意,一个internal
的类的构造器仅在同module
中可见。
局部声明
局部变量,函数和类都没有可见性修饰符。
模块Modules
修饰符internal
意味着它的成员在同模块中都是可见的。更确切的说,一个模块是一些Kotlin文件的集合被编译在一起。
- 一个 IntellJ IDEA 模块
- 一个Maven 或者Gradle 工程
- 一些文件的集合,他们被一个Ant任务编译
PS,我会坚持把这个系列写完,有问题可以留言交流,也关注专栏Kotlin for Android Kotlin安卓开发
阅读全文
1 0
- Kotlin学习之-5.4 可见性描述符
- Kotlin 学习之可见性修饰符
- Kotlin 官方学习教程之可见性修饰符
- Kotlin 可见性修饰符
- Kotlin学习笔记(五)接口,可见性修饰符
- Kotlin-2.4-可见性修饰符
- 学习kotlin第八天_接口、可见性修饰符、扩展
- Kotlin 从学习到 Android 第九章 可见性修饰符
- Kotlin学习(十): 可见性修饰符和数据类
- Kotlin-11.可见性修饰符(Visibility Modifiers)
- Kotlin类和对象 (四)--- 可见性修饰符
- Kotlin基础(一) 常量、变量、可见性修饰符
- Kotlin 第九章:可见性修饰词
- Kotlin编程之可见性修饰词(private,protected,internal,public)
- Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展
- Kotlin 中的操作符重载汇总表 与 可见性修饰符总结
- Kotlin最简单的入门教程——可见性修饰符,扩展,数据类,密封类
- Kotlin Reference (八) 可见性修饰符, data class,object Claz
- innodb_io_capacity 脏页刷盘控制
- 博客迁址
- python常用模块收录
- 一些图像处理概念
- 易商通配置文件init
- Kotlin学习之-5.4 可见性描述符
- 110个oracle常用函数总结
- spring +quartz
- linux的解压和压缩指令
- 冒泡排序
- 纯干货8 吴恩达新书《Machine_Learning_Yearning》_version_5.01分享
- 12C的PDB使用RMAN的4种完全恢复场景
- JAVA开发之 39-JAVA数组知识点(二)
- css预处理器less的分析