包的基本使用
作用: 区分同名的类; 类很多时,更好地管理类;控制访问范围
包的定义格式
定义格式1: package 包名
定义格式2: package 包名 {}
定义格式3: package 包名{ package 包名 }
基本步骤:创建包 → 创建对象(类) → 导入类
包名称应全部为小写,只能包含数字,字母,下划线,小圆点。不能使用数字开头,也不要用关键字。
1.创建一个软件包,命名为jh
2.在jh软件包中创建一个scala类/类文件,命名为TestStudent
3.在jh软件包内再创一个软件包名为jh.com
4.在jh.com软件包中创建一个Scala类/文件,名为Student
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()
}
}
2.导入同一个包下面的文件
同一个包下面的文件,相互之间不需要import
package jhart.com
import jhart.com.model.Student
object Test {
def main(args: Array[String]): Unit = {
// 不需要import,因为Student和当前测试文件在同一个包下面
new Student()
}
}
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()
}
}
包对象
在包对象中定义的成员,可以被同一个包下面的任何代码所直接访问,不需要导入
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)
}