package base04
/**
* scala中的static
* Created by dd on 2016/5/19 0019.
*/
object demo05 extends App{
// scala中没有静态字段和静态方法,因为它们会打破scala中所支持的完整的面向对象模型,
// 不过scala也是完全支持类一级的属性和操作的,这就是伴生对象的作用
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 primaryColors = "red, green, blue"
def apply(color: String): Marker = if(markers.contains(color)) markers(color) else null
}
//相当于静态方法了
println("Primary colors are "+Marker.primaryColors)
//apply方法使得不需要new关键字直接调用伴生对象的apply方法也可以创建对象了
println(Marker("blue"))
println(Marker("red"))
}
Programming Scala第4章demo05 通过伴生对象完成静态字段与方法的访问
最新推荐文章于 2023-07-03 13:03:56 发布