(二十四)包及其导入

40 阅读2分钟

(一)包的概念

  • Scala中的包可以定义在文件的开头,也可以在代码的任意位置。

作用: 区分同名的类; 类很多时,更好地管理类;控制访问范围

(二)包的基本使用

基本步骤:创建包 → 创建对象(类) → 导入类

示例:

1. 创建包。右键,新建软件包。名称小写。

2. 在包上右键,新建类

3. 在测试文件中引入类,使用。

(三)包的定义格式

定义格式1: package 包名

定义格式2: package 包名 {}

定义格式3: package 包名{ package 包名  }

注意:   一个惯例是将包命名为与包含 Scala 文件的目录名相同。

  • 代码
package level02
object demo01 {
  class Student() {
    def test(): Unit = {
      println("test.....")
    }
  }

  def main(args: Array[String]): Unit = {
    var s1 = new Student()
    s1.test()
  }
}

(四)导入包

Scala的导入语法:在Scala中显示导入包使用import关键字。

(1)import 包名  导入这个包下的顶层对象

(2)通配符导入: import 包名._ 导入这个包下所有的类

(3)import 包名.类名 导入这个包下的具体的类

(4)导入相同包的多个类:import java.util.{HashSet, ArrayList }

(5)导入成员重命名。如果在一个类中需要导入不同包中的成员且成员名相同,可以通过导入成员重命名的方式区分不同包中的成员,其语法格式为:

import java.util.{ArrayList=>JL} 表示把util包中的ArrayList类重命名为JL。

(6)局部导入:什么时候用,什么时候import。在其作用范围内部都可以使用。

(7)导入成员隐藏类。如果一个包中包含多个类,除包中某一个类之外都需要导入,可以使用导入成员隐藏类的方法,其语法格式为:把包中的A不导入。import 包.{A=>_ , _}

例如


// 1. 导入一个类
//import tools.A

// 2. 导入多个
//import 包名.{类1 类2 ....}
//import tools.{B, C, Student}

// 3. 导入一个包下所有的类 包名._
import tools._

// 4. 导入之后重新命名 格式:包.{类名=>新名字}
import tools.art.Student
import tools.art.{Student => NewStudent}

object demo02 {
  def main(args: Array[String]): Unit = {
    new A()
    new B()
    new C()

    var s1 = new NewStudent()
    s1.test()
  }
}

(五)定义包对象

包对象是通过将其置于包的定义内部来创建的。例如,假设我们有一个包 com.example,我们可以在该包中创建一个包对象。

package object 包名 {}

使用

1在同一个包下的类(对象中)直接访问;

2在子包下,通过包名.成员的方法访问

使用包对象:

包对象中的成员可以被同一个包中的任何代码所访问。不需要导入包对象,因为成员在包的命名空间中可用。