包
一個源文件以包聲明開始:
packagefoo.barfunbza() {}classGoo{}//...
源文件的所有內(nèi)容(比如類和函數(shù))都被包聲明包括惜辑。因此在上面的例子中乏梁,bza()的全名應(yīng)該是foo.bar.bza床嫌,Goo的全名是foo.bar.Goo。
如果沒有指定包名,那這個文件的內(nèi)容就從屬于沒有名字的 "default" 包缔俄。
許多包被默認(rèn)導(dǎo)入到每個Kotlin文件中:
-- kotlin.*
-- kotlin.annotation.*
-- kotlin.collections.*
-- kotlin.comparisons.* (since 1.1)
-- kotlin.io.*
-- kotlin.ranges.*
-- kotlin.sequences.*
-- kotlin.text.*
一些增強包會根據(jù)平臺來決定是否默認(rèn)導(dǎo)入:
-- JVM:
---- java.lang.*
---- kotlin.jvm.*
-- JS:
---- kotlin.js.*
除了模塊中默認(rèn)導(dǎo)入的包,每個文件都可以有它自己的導(dǎo)入指令器躏。導(dǎo)入語法的聲明在grammar中描述俐载。
我們可以導(dǎo)入一個單獨的名字,比如下面這樣:
importfoo.Bar//Bar 現(xiàn)在可以不用條件就可以使用
或者范圍內(nèi)的所有可用的內(nèi)容 (包登失,類遏佣,對象,等等):
importfoo.*//foo 中的所有都可以使用
如果命名有沖突揽浙,我們可以使用as關(guān)鍵字局部重命名解決沖突
importfoo.Bar//Bar 可以使用importbar.BarasbBar//bBar 代表 'bar.Bar'
import關(guān)鍵字不局限于導(dǎo)入類;您也可以使用它來導(dǎo)入其他聲明:
-- 頂級函數(shù)與屬性
-- 在對象聲明中聲明的函數(shù)和屬性
--枚舉常量
如果最頂?shù)穆暶鳂?biāo)注為 private , 那么它是自己對應(yīng)包私有 (參看Visibility Modifiers)状婶。如果包內(nèi)有私有的屬性或方法,那它對所有的子包是可見的馅巷。
注意包外的的成員是默認(rèn)不導(dǎo)入的膛虫,比如在導(dǎo)入foo.bar后我們不能獲得foo的成員