zoukankan      html  css  js  c++  java
  • 大三寒假学习 spark学习 Scala面向对编程 对象(单例对象和伴生对象)

    单例对象:

    • Scala采用单例对象(singleton object)来实现与Java静态成员同样的功能。
    • 使用object 关键字定义单例对象。

      

      代码示例

    object person {
        private var lastId=0//一个人的身份编号
        def newPersonId()={
            lastId +=1
            lastId
        }
    }
    printf("The first person id is %d.n" ,person.newPersonId())
    printf("The second person id is %d.\n",person.newPersonId())
    printf("The third person id is %d.\n",person.newPersonId())

     

    伴生对象:

    • 当一个单例对象和它的同名类一起出现时,这时的单例对象被称为这个同名类的“伴生对象” (companion object)。相应的类被称为这个单例对象的“伴生类”
    • 类和它的伴生对象必须存在于同一个文件中,可以相互访问私有成员。
    • 没有同名类的单例对象,被称为孤立对象(standalone object)。一般情况下,Scala程序的入口点main方法就是定义在一个孤立对象里。
    class Person {
        private val id = Person.newPersonId()//调用了伴生对象中的方法private var name = ""
        def this(name: String){
            this()
            this.name = name
        }
        def info() { printf( "The id of %s is %d.\n",name,id)}
    }
    object Person {
        private var lastId = 0//一个人的身份编号
        private def newPersonId()={
            lastId +=1
            lastId
        }
        def main(args: Array[String]){
            val person1 = new Person("ziyu")
            val person2 = new Person("Minxing")
            person1.info()
            person2.info()
        }
    }

    先编译后与运行

     从上面结果可以看出,伴生对象中定义的newPersonId)实际上就实现了Java中静态(static)方法的功能

    Scala源代码编译后都会变成JVM字节码实际上,在编译上面的源代码文件以后在Scala里面的class和object在Java层面都会被合二为一,class里面的成员成了实例成员,object成员成了static成员)

    应用程序对象:

      每个scala应用程序都必须从一个对象的main方法开始

      

  • 相关阅读:
    4.23上机练习
    4.17java作业
    4.16java作业
    leetcode 189
    leetcode 172
    leetcode 171
    leetcode 169
    win10内网外网智能访问
    leetcode 168
    leetcode 165
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/15794901.html
Copyright © 2011-2022 走看看