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