包是用來管理類和函數,相同類可放置在不同的包下面,可防止命名衝突問題,非常的方便
在Kotlin中所有類和函數都包含在包裏面。如果沒有指明包,都是無名的默認包
以下是默認導入的
kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.* (自 1.1 起)
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*
jvm平臺會導入以下默認包
java.lang.*
kotlin.jvm.*
js:
kotlin.js.*
Kotlin的main方法中有這樣一個參數類型Array
fun main(args: Array<String>) { }
這個Array是在包名爲Kotlin的包中,所以我們看到在kotlin文件中不需要導入它
就可以直接使用,會默認導入
使用import關鍵字導入包
新建一個包名字爲com.mcx.basic,在包下面新建一個Kotlin文件Package.kt
然後新建一個包名字爲com.mcx.basic.pkg,在這個包下面新建一個類PackageTest,內容如下
package com.mcx.basic.pkg class PackageTest{ var a: Int = 1 }
在Package.kt中編寫以下代碼
package com.mcx.basic import com.mcx.basic.pkg.PackageTest //導入包 fun main(args: Array<String>) { //訪問com.mcx.basic.pkg包下面的PackageTest PackageTest().a }
爲了使用PackageTest類,需要使用import關鍵字導該類,然後就可以直接通過
類名直接訪問
as關鍵字消除歧義
如果兩個類名相同,但是在不同的包下面,如有要同時使用這兩個類導入已經導入一個類後
另一個類只能使用類全限定名,這樣看起來並不是很舒服,如果多個地方需要使用的話會變
得很麻煩
新建一個包com.mcx.basic.anotherpkg,然後新建一個類同樣爲PackageTest,內容與com.mcx.basic.pkg.PackageTest一致
package com.mcx.basic.anotherpkg class PackageTest{ var a: Int = 1 }
Package.kt
package com.mcx.basic import com.mcx.basic.pkg.PackageTest fun main(args: Array<String>) { //訪問com.mcx.basic.pkg包下面的PackageTest PackageTest().a com.mcx.basic.anotherpkg.PackageTest().a com.mcx.basic.anotherpkg.PackageTest().a //此處模擬多次使用PackageTest類 }
使用as關鍵字
import com.mcx.basic.pkg.PackageTest //使用as關鍵字消除歧義 import com.mcx.basic.anotherpkg.PackageTest as AnotherPackageTest fun main(args: Array<String>) { //訪問com.mcx.basic.pkg包下面的PackageTest PackageTest().a AnotherPackageTest().a //實際訪問的是com.mcx.basic.anotherpkg包下的PackageTest }
as關鍵字相當於給com.mcx.basic.anotherpkg.PackageTest取了一個別名,這個時候使用起來非常方便