Scala中,class没有static类型变量,但是提供了单例的object。
object类型和class类型类似,不过没有构造函数。示例如下:
scala> object Demo {
| val n = 10
| def print = println("I'm Mr object Demo")
| }
scala> Demo.n
res30: Int = 10
scala> Demo.print
I'm Mr object Demo
和class 同名的object 称为该class的伙伴object,该class称为object的伙伴class。class和它的伙伴object必须定义在同一个源代码文件中。
伙伴object和class可以访问对方的私有变量。示例如下:
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Demo(private val a:Int,private val b:Int) {
def test(){
println(Demo.a)
}
}
object Demo {
private val a = 12
def demoDetail(demo:Demo) = println("a="+demo.a+",b="+demo.b)
}
// Exiting paste mode, now interpreting.
defined class Demo
defined object Demo
scala> val demo = new Demo(1,2)
demo: Demo = Demo@778a408c
scala> demo.test
12
scala> Demo.demoDetail(demo)
a=1,b=2
参考自:
Programming Scala 2nd Edition
阅读(874) | 评论(0) | 转发(0) |