手记

【九月打卡】第7天 一课掌握Kotlin 突破开发语言瓶颈

课程信息

课程内容

可见性对比

可见性修饰对象

模块的概念

模块大致可以认为是一个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可见性的总结,让我们记忆起来尤为简单。

1人推荐
随时随地看视频
慕课网APP