Kotlin笔记 七(三) 包与访问控制符.md

导包

1、封装概念

封装:即将对象状态信息封装在对象内部,不允许外部程序直接访问对象内部信息,而是通过对象暴露的方法实现对内部状态的访问与操作

2、包

Kotlin编译器总是会为源文件中的包结构生成对应的文件目录,而Javac编译期需要-d选项才会生成文件目录;

2.1、导包

Kotlin支持两种方式:

精确导包:
import foo.bar//导入foo包中的Bar

和通配符导入

import foo.*	//导入foo包中的所有成员

Kotlin中的import相当于Java中的import和static import(静态导入)合体,它不仅可以导入类,还可以导入:

  1. 顶层函数即属性
  2. 对象声明中声明的函数和属性
  3. 枚举常量

当遇到不同包中相同类名,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:任意地方

局部声明(局部变量、局部方法、局部嵌套类)作用域只在该方法内有效,不能使用访问控制符

你可能感兴趣的:(Kotlin)