scala 包与类导入

55 阅读2分钟

在编程中,“包(Package)” 就像文件柜的抽屉,“导入(Import)” 则是打开抽屉取文件的动作 —— 它们共同解决了类名冲突和代码组织两大核心问题。Scala 作为面向对象与函数式结合的语言,其包和导入机制既保留了 Java 的直观性,又增加了更灵活的语法特性。

一、核心概念:包(Package)的本质与用法

1. 包的定义规则

Scala 中包的定义有两种常见方式:

  • 单包声明:如代码中 package testpackage art,直接声明当前文件所属的包,所有类 / 对象默认属于该包。

  • 嵌套包声明(进阶):支持多层嵌套,例如 package com.company.project,对应文件系统的层级目录(com/company/project)。

2. 代码案例 1:同包下的类访问(无需导入)

第一段代码定义了test包下的Student类:

package test
//package 包

class Student {
  println("student....")

}

第二段代码同样在test包下,定义了Main对象并创建Student实例:

package test

object Main {
  def main(args: Array[String]): Unit = {
    new Student()
  }

}

二、核心操作:导入(Import)的三种场景

当需要访问不同包下的类时,就需要通过import语句引入。第三段代码完美演示了跨包导入的基础用法:​

3. 基础导入:指定包名。类名

package art
//导入 import
//包名.类名
import test.Student


object Main {
  def main(args: Array[String]): Unit = {
    new Student()
  }

}

三、Scala 类导入的 3 种基础方式

Scala 的导入机制灵活且简洁,针对不同的使用场景,提供了 “导入单个类”“导入多个类”“导入包下所有类” 三种核心方式,我们结合 tools 包的示例逐一解析。

4. 导入单个类:精准引用,减少冗余

当只需要使用某个包下的特定类时,采用 “包名。类名” 的精准导入方式,避免导入无用类造成的资源浪费。

语法格式import 包名.类名

package toolTest

//import tools.{A,B,C}
import tools._


//1.import 导入一个类。包名 类名
//2.import 导入多个类 包名.{类名1,类名2}
//3.import  导入包下面所有的类 包名._
//4.如果导入一个类,与现有的类名有冲突?
//导入类的时候可以改下名字——重命名
import tools.{C => C1}

//import tools.A
//import tools.B
class C() {
  println("C")
}
object Main {
  def main(args: Array[String]): Unit = {
   new C1()
    new C()
  }

}