scala_包_2
原创
©著作权归作者所有:来自51CTO博客作者959_1x的原创作品,请联系作者获取转载授权,否则将追究法律责任
scala对于包有很多新的特性:
1.权限范围的改变
2.包访问权限
3.包的引用
1.权限范围的改变
private,proteced,default
没有public
object demo01 {
def main(args: Array[String]): Unit = {
val c = new Clerk
c.showinfo()
Clerk.test(c)
//c.age显示不出来
}
}
//类
//private只可以在伴生对象中使用
//provate只可以子类访问,同包无法访问
class Clerk{
var name = "lisi"
private val sal : Double = 99.99
//没有public
protected val age = 11
def showinfo(): Unit ={
println("name = " + name + " sal = " + sal)
}
}
//当一个文件中出现class和object的话,class为伴生类,object为伴生对象
//为什么要这样呢,因为设计者把static去掉了,非静态为伴生类calss静态为伴生对象static
object Clerk{
def test(c:Clerk): Unit ={
println("test() name=" + c.name + " sal = " + c.sal)
println(c.age)
}
}
对于pirvate来说只有在伴生对象和伴生类中可以使用
伴生类:class,伴生对象:object
对于provated来说只可以访问子类,同包的不可以访问,区别于java来说
对于default来说同包都可以访问
2.包访问权限
scala加上了一个新特性用于添加private的权限,表示是private,且可以用于只读,不可以写
object demo02 {
def main(args: Array[String]): Unit = {
val p1 = new person
println(p1.name)
}
}
//包访问权限扩大了private的权限
class person{
private[chapter01] val name = "lisi"
}
3.包引用
1.包的引用的后面的下划线_相当与java中的*
2.引入多个包的时候可以用{}括起来
3.重命名包的名称
2
import scala.colleciton.mutable.{HashMap,HashSet}
3
import java.util.{HashMap=>javaHashMap}
import scala.collection.mutable._
val map1 = new javaHashMap()
val map2 = new HashMap()
object demo03 {
}
class user{
import scala.beans.BeanProperty
@BeanProperty var name :String = ""
//3.
import java.util.{HashMap=>javaHashMap}
import scala.collection.mutable._
val map1 = new javaHashMap()
val map2 = new HashMap()
}
class Dog{
@BeanProperty var name :String = ""
}