课程信息
课程名称: 一课掌握Kotlin 突破开发语言瓶颈
课程章节: 类与成员的可见性(7-2)
课程讲师: bennyhuo
课程内容
可见性对比
可见性修饰对象
模块的概念
模块大致可以认为是一个Jar包、一个aar,具体分为:
- IntelliJ IDEA模块
- Maven工程
- Gradle SourceSet
- Ant任务中一次调用的文件
internal vs default
- 一般由SDK或公共组件开发者用于隐藏模块内部细节实现
- default可通过外部创建相同包名来访问,访问控制非常弱
- default会导致不同抽象层次的类聚集到相同包之下
- internal可方便处理内外隔离,提升模块代码内聚减少接口暴露
- internal修饰的Kotlin类或成员在Java当中可直接访问
构造器的可见性
class Person
private constructor(var age: Int, var name: String)
属性的可见性
// private修饰的属性为私有化属性,外部无法访问
class Person(private var age: Int, var name: String)
class Person(var age: Int, var name: String) {
private var firstName: String = ""
}
属性getter/setter的可见性
getter的可见性必须与属性可见性一致
// firstName可见性是public,设置getter为private会报错
class Person(var age: Int, var name: String) {
var firstName: String = ""
private set
private get
}
setter的可见性不得大于属性的可见性
// firstName可见性是private,设置setter为public会报错
class Person(var age: Int, var name: String) {
private var firstName: String = ""
public set
}
顶级声明的可见性
- 顶级声明指文件内直接定义的属性、函数、类等
- 顶级声明不支持protected
- 顶级声明被private修饰表示文件内部可见
学习总结
通过本章节的学习,掌握了Kotlin可见性的相关知识,老师对getter/setter可见性的总结,让我们记忆起来尤为简单。