包
一個源文件以包聲明開始:
packagefoo.barfunbza() {}classGoo{}//...
源文件的所有內容(比如類和函數)都被包聲明包括。因此在上面的例子中,bza()的全名應該是foo.bar.bza,Goo的全名是foo.bar.Goo。
如果沒有指定包名,那這個文件的內容就從屬于沒有名字的 "default" 包。
許多包被默認導入到每個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.*
除了模塊中默認導入的包,每個文件都可以有它自己的導入指令。導入語法的聲明在grammar中描述。
我們可以導入一個單獨的名字,比如下面這樣:
importfoo.Bar//Bar 現在可以不用條件就可以使用
或者范圍內的所有可用的內容 (包,類,對象,等等):
importfoo.*//foo 中的所有都可以使用
如果命名有沖突,我們可以使用as關鍵字局部重命名解決沖突
importfoo.Bar//Bar 可以使用importbar.BarasbBar//bBar 代表 'bar.Bar'
import關鍵字不局限于導入類;您也可以使用它來導入其他聲明:
-- 頂級函數與屬性
-- 在對象聲明中聲明的函數和屬性
--枚舉常量
如果最頂的聲明標注為 private , 那么它是自己對應包私有 (參看Visibility Modifiers)。如果包內有私有的屬性或方法,那它對所有的子包是可見的。
注意包外的的成員是默認不導入的,比如在導入foo.bar后我們不能獲得foo的成員