包的定义
- 基本语法
package 包名
- Scala 包的三大作用(和 Java 一样)
(1)区分相同名字的类
(2)当类很多时,可以很好的管理类
(3)控制访问范围
包的命名
1) 命名规则
只能包含数字、字母、下划线、小圆点.,但不能用数字开头,也不要使用关键字。
2)案例实操
demo.class.exec1 //错误,因为 class 关键字
demo.12a //错误,数字开头
3) 命名规范
一般是小写字母+小圆点
com.公司名.项目名.业务模块名
包说明(包语句)
Scala 有两种包的管理风格,一种方式和 Java 的包管理风格相同,每个源文件一个包(包 名和源文件所在路径不要求必须一致 ),包名用“.”进行分隔以表示包的层级关系, 如 com.atguigu.scala。另一种风格,通过嵌套的风格表示层级关系,如下
package com {
package atguigu {
package scala {
}
}
}
第二种风格有以下特点:
(1)一个源文件中可以声明多个 package
(2)子包中的类可以直接访问父包中的内容,而无需导包
package com{
import com.atguigu.scala.Inner
// 在外层包中定义单例对象
object Outer{
var out: String = "out"
def main(args: Array[String]): Unit = {
//外层不能直接访问, 要这样才能访问
println(Inner.in)
}
}
package atguigu{
package scala{
// 内层包中定义单例对象
object Inner{
var in: String = "in"
def main(args: Array[String]): Unit = {
println(Outer.out)
Outer.out = "outer"
println(Outer.out)
}
}
}
}
}
// 在同一文件中定义不同的包
package aaa{
package bbb{
object Test01_Package{
def main(args: Array[String]): Unit = {
import com.atguigu.scala.Inner
println(Inner.in)
}
}
}
}
包对象
在 Scala 中可以为每个包定义一个同名的包对象,定义在包对象中的成员,作为其对 应包下所有 class 和 object 的共享变量,可以被直接访问。
// 这个包对象和包名要一致
package object chapter06 {
// 定义当前包共享的属性和方法
val commonValue = "清华"
def commonMethod() = {
println(s"我们在 ${commonValue} 学习")
}
}
这个文件夹下, 另一个scala, 还是这个包, 包还要同一层级
package chapter06{
object Test02_PackageObject {
def main(args: Array[String]): Unit = {
//能访问到包对象
commonMethod()
println(commonValue)
}
}
}
导包
1)和 Java 一样,可以在顶部使用 import 导入,在这个文件中的所有类都可以使用。
2)局部导入:什么时候使用,什么时候导入。在其作用范围内都可以使用
3)通配符导入:import java.util.
4)给类起名:import java.util.{ArrayList=>JL}
5)导入相同包的多个类:import java.util.{HashSet,ArrayList}
6)屏蔽类:import java.util.{ArrayList=>,}
7)导入包的绝对路径:new _root.java.util.HashMap
说明
注意
Scala中的三个默认导入分别是
import java.lang._
import scala._
import scala._