UP | HOME

Table of Contents

源文件通常以包声明开头:

package org.example

fun printMessage() { /*……*/ }
class Message { /*……*/ }

// ……

源文件所有内容(无论是类还是函数)都包含在声明的包内

  上例中 printMessage() 的全名是 org.example.printMessage, 而 Message 的全名是 org.example.Message 

如果没有指明包,该文件的内容属于无名字的默认包

默认导入

有多个包会默认导入到每个 Kotlin 文件中:

  • kotlin.*
  • kotlin.annotation.*
  • kotlin.collections.*
  • kotlin.comparisons.*
  • kotlin.io.*
  • kotlin.ranges.*
  • kotlin.sequences.*
  • kotlin.text.*

根据目标平台还会导入额外的包:

  • JVM:
    • java.lang.*
    • kotlin.jvm.*
  • JS:
    • kotlin.js.*

导入

除了默认导入之外,每个文件可以包含它自己的导入指令

  • 可以导入一个单独的名字:

    import org.example.Message // 现在 Message 可以不用限定符访问
    
  • 可以导入一个作用域下的所有内容(包、类、对象等):

    import org.example.* // “org.example”中的一切都可访问
    
  • 如果出现名字冲突,可以使用 as 关键字在本地重命名冲突项来消歧义:

    import org.example.Message // Message 可访问
    import org.test.Message as testMessage // testMessage 代表“org.test.Message”
    

关键字 import 并不仅限于导入类;也可用它来导入其他声明:

  • 顶层函数及属性
  • 在对象声明中声明的函数和属性
  • 枚举常量

顶层声明的可见性

如果顶层声明是 private 的,它是声明它的文件所私有的

Next:控制流 Previous:数据类型 Home:基础