scala的包

40 阅读2分钟

包的基本使用

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

包的定义格式

定义格式1: package 包名

定义格式2: package 包名 {}

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

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

包名称应全部为小写,只能包含数字,字母,下划线,小圆点。不能使用数字开头,也不要用关键字。

1.创建一个软件包,命名为jh 屏幕截图 2025-11-29 202455.png 2.在jh软件包中创建一个scala类/类文件,命名为TestStudent

屏幕截图 2025-11-29 203325.png 3.在jh软件包内再创一个软件包名为jh.com

屏幕截图 2025-11-29 203404.png 4.在jh.com软件包中创建一个Scala类/文件,名为Student

屏幕截图 2025-11-29 203543.png 5.在Student中输入以下内容:

package jh.com

class Student (var name:String) {
  def sayHello(): Unit = {
    println(s"${name}")
  }
}

导入包

1.导入别的文件中的类,对象,特质...

例:在上述TestStudent中,导入jh下的com下的Student类

package jh

import jh.com.Student

object TestStudent {
  def main(args: Array[String]): Unit = {
    val stu = new Student("小花")
    stu.sayHello()
  }
}

屏幕截图 2025-11-24 102605.png

2.导入同一个包下面的文件

同一个包下面的文件,相互之间不需要import

package jhart.com

import jhart.com.model.Student 

object Test {
  def main(args: Array[String]): Unit = {
    // 不需要import,因为Student和当前测试文件在同一个包下面
    new Student()
  }
}

image.png

3.同时导入多个类

package jhart.com

// 1.同时导入多个类:import 包.{类1,类2}
// import jhart.com.model.Student
// import jhart.com.model.Teacher

// 2.同时导入包下的所有类
// import jhart.com.model.{Student, Teacher}
import jhart.com.model._

// 3.导入类之后,重命名
import jhart.com.model.{Student => Stu}


object Test {
  class Student() {
    println("Student")
  }

  def main(args: Array[String]): Unit = {
    new Stu()
    new Teacher()
  }
}

包对象

在包对象中定义的成员,可以被同一个包下面的任何代码所直接访问,不需要导入

屏幕截图 2025-11-24 112817.png
package jhart.com

// 在包对象中定义的成员,可以被同一个包下面的任何代码所直接访问,不需要导入
package object model {
  val greeting:String = "hello package model!"
}
package jhart.com.model

import jhart.com.model
class Student {
  println("jhart.com.model.Student")
  println(model.greeting)
}