(一)包的基本使用
1. 创建包。右键,新建软件包。名称小写。回到资源管理器中,去查看这个新建的文件夹。
2. 在包上右键,新建类。
3. 观察它新建的类会在文件的头部位置自动添加package信息。
提示:在不同的包之间移动文件,Idea编辑器会自动修改package信息
(二)包的作用
包的作用: 防止同名冲突; 更好地管理类;
在src根目录下,新建两个不同的文件,其中都有同名的class。就会出冲突。
基本 步骤:创建包 → 创建对象(类) → 导入类
(三)包的定义格式
定义格式1: package 包名
定义格式2: package 包名 {}
定义格式3: package 包名{ package 包名 }
[注意] 一个惯例是将包命名为与包含 Scala 文件的目录名相同。
包名称应全部为小写,只能包含数字,字母,下划线,小圆点。不能使用数字开头,也不要用关键字。
两种包的管理风格:
风格1:将包名与包含scala文件的目录名相同
风格2:嵌套package表示层级关系
object TestPackage {
def main(args: Array[String]): Unit = {
val m1 = new dxj.M()
m1.f2()
}
}
package dxj {
class M extends com.td.teacher.Teacher {
def f2() {}
}
}
package com.td.teacher {
class Teacher() {
def f1(){}
}
}
(四)导入包
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=>_ , _}
第 二 课时
(五)定义包对象
包对象是通过将其置于包的定义内部来创建的。例如,假设我们有一个包 com.example,我们可以在该包中创建一个包对象。
[格式]package object 包名 {}
使用
1.在同一个包下的类(对象中)直接访问;
2.在子包下,通过包名.成员的方法访问
在这个示例中,我们定义了一个包对象 mypackage,其中包含一个常量 greeting 和一个方法 greet。
使用包对象
包对象中的成员可以被同一个包中的任何代码所访问。不需要导入包对象,因为成员在包的命名空间中可用。
以下是一个简单的使用示例:
在 src/main/scala/com/example/Main.scala
package com.example
object Main {
def main(args: Array[String]): Unit = {
// 直接使用包对象中的成员
println(mypackage.greeting) // 输出: Hello from package object!
println(mypackage.greet("Alice")) // 输出: Hello from package object!, Alice!
}
}