kotlin學習筆記(五)


一個源文件以包聲明開始:

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.*

Imports

除了模塊中默認導入的包,每個文件都可以有它自己的導入指令。導入語法的聲明在grammar中描述。

我們可以導入一個單獨的名字,比如下面這樣:

importfoo.Bar//Bar 現在可以不用條件就可以使用

或者范圍內的所有可用的內容 (包,類,對象,等等):

importfoo.*//foo 中的所有都可以使用

如果命名有沖突,我們可以使用as關鍵字局部重命名解決沖突

importfoo.Bar//Bar 可以使用importbar.BarasbBar//bBar 代表 'bar.Bar'

import關鍵字不局限于導入類;您也可以使用它來導入其他聲明:

-- 頂級函數與屬性

-- 在對象聲明中聲明的函數和屬性

--枚舉常量

可見性和包嵌套

如果最頂的聲明標注為 private , 那么它是自己對應包私有 (參看Visibility Modifiers)。如果包內有私有的屬性或方法,那它對所有的子包是可見的。

注意包外的的成員是默認不導入的,比如在導入foo.bar后我們不能獲得foo的成員

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容