一個源文件需要以包聲明為開頭:
package foo.bar
fun baz() {}
class Goo {}
// ...
源文件的所有內容(如類和函數)都包含在聲明的包中。 所以,在上面的例子中,baz()的全稱是foo.bar.baz,而Goo的全稱是foo.bar.Goo。
如果沒有指定包,則這樣的文件的內容屬于沒有名稱的“default”包。
默認導入(Default Imports)
下述包默認情況下會被導入每一個Kotlin文件中:
- kotlin.*
- kotlin.annotation.*
- kotlin.collections.*
- kotlin.comparisons.* (since 1.1)
- kotlin.io.*
- kotlin.ranges.*
- kotlin.sequences.*
- kotlin.text.*
根據目標平臺的不同會相應導入需要的其他包:
- JVM:
- java.lang.*
- kotlin.jvm.*
- JS:
- kotlin.js.*
導入(Imports)
除了默認導入,每個文件可能包含屬于該文件本身的導入指令。
我們可以導入單個名稱,如:
import foo.Bar // Bar is now accessible without qualification
或范圍的所有可訪問內容(包,類,對象等):
import foo.* // everything in 'foo' becomes accessible
如果有重名沖突,我們可以通過使用as關鍵字來本地重命名來消除歧義:
import foo.Bar // Bar is accessible
import bar.Bar as bBar // bBar stands for 'bar.Bar'
import關鍵字不限于導入類; 您也可以使用它來導入其他聲明:
- 頂級函數和屬性
- 在對象聲明中聲明的函數和屬性
- 枚舉常數
與Java不同,Kotlin沒有單獨的“import static”語法; 所有這些聲明都使用常規import關鍵字導入。
頂級聲明的可見性(Visibility of Top-level Declarations)
如果頂級聲明被標記為“私有”,則對其聲明的文件是私有的(請參閱“可見性修飾符”)。