Kotlin笔记 第七章 (三)包与访问控制符.md
导包
1、封装概念
封装:即将对象状态信息封装在对象内部,不允许外部程序直接访问对象内部信息,而是通过对象暴露的方法实现对内部状态的访问与操作
2、包
Kotlin编译器总是会为源文件中的包结构生成对应的文件目录,而Javac编译期需要-d选项才会生成文件目录;
2.1、导包
Kotlin支持两种方式:
精确导包:
import foo.bar//导入foo包中的Bar
和通配符导入
import foo.* //导入foo包中的所有成员
Kotlin中的import相当于Java中的import和static import(静态导入)合体,它不仅可以导入类,还可以导入:
- 顶层函数即属性
- 对象声明中声明的函数和属性
- 枚举常量
当遇到不同包中相同类名,Java的做法是:
其中有一个类放弃导包,使用类全名
Kotlin优雅的解决了这个问题:
利用取别名的方式,解决导入不同包中相同类名的类,如:
import Java.sql.Date as SDate
3、访问控制符
private:只能在该类的内部或者文件的内部被访问
internal:在该类的背部或者同一个模块内被访问
protected:在该类的内部或者文件内部或者其之类中被访问
public:任意地方被访问
Kotlin如果没有显示指定访问符,默认是public
3.1、位于包内的顶层成员
位于包内的顶层成员(包括顶层类、接口、函数、属性),只能使用private、internal、public其中之一,不能使用protected修饰符;
private:只能在在当前文件中被访问
internal:只能在当前文件或者当前模块中被访问
public:任意地方被访问
如:
private fun foo(){}
internal fun test(){}
public var bar :Int=8
private set
internal var baz=9
private set
注意:getter方法的访问权限总是和该属性保持一致
直接定义在包内的顶层函数、属性会转换成Kotlinx所生成的类(类名+Kt)中的静态方法和静态属性;
3.2、位于接口、类之内的成员
位于类、接口之内的成员(包括顶层类、接口、函数、属性),只能使用private、internal、protected、public其中之一
private:只能在该类中被访问
internal:只能在该类或者当前模块中被访问
protected;只能在该类或其子类中被访问
public:任意地方
局部声明(局部变量、局部方法、局部嵌套类)作用域只在该方法内有效,不能使用访问控制符
上一篇: 各图形的画图
下一篇: 微信私域裂变5大打法