为什么会用package的概念?
因为要对多个同名的类进行命名空间的管理,避免同名类发生冲突
就比如scala.collection.mutable.Map/scala.collection.immutable.Map
------------------------------------------------------------------------------------------
package定义的第一种方式:多层级package定义(不推荐)
package com{
package taobao{
package utg{
class test{ }
}
}
}
---------------------------------------------------------------------------------------------
package定义的第二种方式:串联式package的定义(不推荐)
package com.taobao.scala{
package dao{
class daoImpl{ }
}
}
------------------------------------------------------------------------------------------------
package定义的第三种方式:文件顶部定义(推荐)
package com.tao.bao.dao.impl
class test{
}
package特性:
1.同一个包定义,可以在不同的Scala源文件中的;一个scala源文件内,可以包含两个包
2.子包中的类,可以访问父包中的类
3.相对包名和绝对包名(_root_.scala.collection.immutable.ArrayBuffer)
4.定义package对象
5.package可见性
package com.taobao.scala.dao
private [dao] val name="leo" //只在dao的package下可见
private [taobao] val name="leo" //只在taobao的package下可见
import特性:
1.用import scala.collection._ 这种格式,可以导入包下所有的成员
2.Scala与java不同之处在于,任何地方都可以使用import
3.选择器/重命名/隐藏
import java.awt.{color,Font} 仅仅导入java.awt包下的color和font类//选择器
import java.util.{HashMap => JavaHashMap} 将导入的包重命名 //重命名
import java.util.{HashMap => _._} 导入所有java.util下的隐藏掉HashMap类
4.隐式导入
java.lang._ salca._ Predef._ 这几个包都会被scala程序默认导入