开发者学堂课程【Scala 核心编程-基础:包的使用细节和注意事项2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8957
包的使用细节和注意事项2
一、包的使用细节
1、父类访问子包的内容时,必须用 import 对应的类。子类访问父包没有问题,因为子包在里面,父包在外面。相当于函数可以使用外部的变量,但是不能返过来使用。
案例演示:
Package com.atguigu
Class User{
def sayhello():unit={
//在父包中调用子包 com.atguigu.scala2 下的 Monster。如果直接写 val monster=new Monster ()就会报错,所以需要引入 import。在 java 中 import 指令必须写在文件的开始,而 Scala 中的 import 指令不一定必须写在文件开始,写在哪里都可以, import 指令是比较灵活的。
I
mport
.com.atguigu. scala2.Monster
val monster=new Monster ()
}
}
package
scala
2{
C
lass
U
ser
}
//在父包下建一个类。
C
lass
M
onster
2、可以在同一个 .scala 文件中,声明多个并列的 package。建议嵌套的 package 不超过三层。
案例演示:
//在 scala 下建多个包,但是最好不超过三个。
P
ackage
scala
{
Package scala4
Package scala5
}
3、引用包名可以使用相对路径引用,也可以使用绝对路径引用。Scala 引用包名时有三种形式,第一种形式和第二种形式都是相对路径引入,第三种形式是绝对路径引入。当包名发生冲突时,使用绝对路径来处理。
案例演示:
package com. atguigu.scala2
class Manager( var name:string) {
//第一种形式,使用相对路径引入。
@BeanProperty var age: Int =
//第二种形式和第一种一样,都是相对路径引入。
@scala.beans.BeanProperty var age2:Int =_
//第三种形式是绝对路径引入,可以解决包名冲突。@_root_表示可以从整个路径的根路径开始计算然后找到 Bean。在实际开发中,使用绝对路径引入的情况很少,只有当自己建的包或者类与系统本身的包或者类发生冲突时,才使用绝对路径来区别。
@_root_.scala.beans.BeanProperty var age3:Int=_
object TestBean {
def main(args:Array [string]):unit = {
val m= new Manager("jack")
printLn("m="+m)
}
}