type: doc layout: reference category: "Syntax"

title: "Packages"

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

package foo.bar

fun baz() {}

class Goo {}

// ...

源文件所有的(无论是类或者函数)被包声明覆盖. 所以baz()的全名是foo.bar.baz, Goo的全名是foo.bar.Goo.

如果没有明确声明文件属于"default"且包没有名称.

导入

除了模块定义的默认导入之外,每个源文件也可以声明自己的导入。 导入语句的语法定义描述在grammar.

可以导入一个单独的名称,如.

import foo.Bar // Bar is now accessible without qualification

也可以导入一个作用域下的所有内容(包、类、对象等):

import foo.* // everything in 'foo' becomes accessible

如果出现名称冲突,可以使用 as{: .keyword } as关键字来重命名导入的名称:

import foo.Bar // Bar is accessible
import bar.Bar as bBar // bBar stands for 'bar.Bar'

可见性和包嵌套

如果顶层声明是private{: .keyword }, 它将是私有的(查看 Visibility Modifiers). 尽管Kotlin中可以包嵌套, 如 包foo.barfoo的一个成员,但是一些private{: .keyword } 仅仅可以被它的子包所见.

注意外部包成员不是默认引入的,例如,在foo.bar包的文件中我们不能在不引入的情况下访问foo.