美文网首页
scala 知识点2

scala 知识点2

作者: 博弈史密斯 | 来源:发表于2018-06-11 08:51 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/wxeasftx.html