包是用来管理类和函数,相同类可放置在不同的包下面,可防止命名冲突问题,非常的方便

在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) {
}

这个Array是在包名为Kotlin的包中,所以我们看到在kotlin文件中不需要导入它

就可以直接使用,会默认导入

Kotlin包_第1张图片


使用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) {
    //访问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) {
    //访问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) {
    //访问com.mcx.basic.pkg包下面的PackageTest
    PackageTest().a

    AnotherPackageTest().a   //实际访问的是com.mcx.basic.anotherpkg包下的PackageTest 
}

as关键字相当于给com.mcx.basic.anotherpkg.PackageTest取了一个别名,这个时候使用起来非常方便