package base04
/**
* 独立对象和伴生对象
* Created by dd on 2016/5/19 0019.
*/
object demo04 extends App{
//scala可以创建一个关联到类上的单例,这样的单例和类共享相同的名字,它称作伴生对象
//对应的类就叫做伴生类,在scala里,类和伴生对象之间没有界限,可以相互访问彼此的private
//字段和private方法,在scala里还可以把构造函数标记为private
class Marker private (val color:String){
println("Creating "+color)
override def toString(): String = "marker color "+color
}
object Marker{
private val markers = Map(
"red" -> new Marker("red"),
"blue" -> new Marker("blue"),
"green" -> new Marker("green")
)
def getMarker(color: String) ={
if(markers.contains(color)) markers(color) else null
}
}
println(Marker.getMarker("blue"))
println(Marker.getMarker("blue"))
println(Marker.getMarker("red"))
println(Marker.getMarker("red"))
//在这里我们发现Marker的构造函数是private的,但是伴生对象依然可以访问它,所以
//可以在伴生对象中创建Marker的实例,但是如果在Marker类或者伴生对象之外创建Marker的
//实例,就会得到error信息
}
Programming Scala第4章demo04 伴生对象和伴生类
最新推荐文章于 2021-06-27 10:50:45 发布