scala 知识点2

1. 伴生对象

在Java中,我们经常需要用到同时包含实例方法和静态方法的类,在Scala中可以通过伴生对象来实现。
伴生对象中的方法 和 java 中被 static 修饰的方法 具有同样的功能。
当单例对象与某个类具有相同的名称时,它被称为这个类的“伴生对象”。类和它的伴生对象必须存在于同一个文件中,而且可以相互访问私有成员(字段和方法)。

class Person {
    private val id = Person.newPersonId() //调用了伴生对象中的方法
    def info() { printf("The id is %d.\n",id)}
}
object Person {
    private var lastId = 0  //一个人的身份编号
    private def newPersonId() = {
        lastId +=1
        lastId
    }
    def main(args: Array[String]){
        val person1 = new Person()
        val person2 = new Person()
        person1.info()
        person2.info()      
    }
}

运行结果如下:

The id is 1.
The id is 2.

从上面结果可以看出,伴生对象中定义的 newPersonId() 实际上就实现了Java中静态(static)方法的功能,所以,实例化 person1 调用 newPersonId() 返回1,实例化 person2 返回 2。

2. val 和 var 的区别

Scala有两种变量,val和var。val(相当于 Java 的 final)就不能再赋值了。与之对应的,var可以在它生命周期中被多次赋值。

val的演示:

scala> val msg=”Hello,world!”; 

scala> msg=”Hello again,world!”; 
//会报错
:5: error: reassignment to val 

你可能感兴趣的:(scala 知识点2)