scala单例对象、伴生对象

scala单例对象
单例是一种只能有一个实例的对象
单例对象的成员、方法都默认是静态的,可以全局访问,共享全局变量很有意义
单例对象还可以扩展类和性状
与类不同的是,单例对象没有参数,单列对象可以拥有类的所有特性
需要注意的是,单例对象会在第一次被访问的时候初始化

import java.io._

class Point(val xc: Int, val yc: Int) {
   var x: Int = xc
   var y: Int = yc
   def move(dx: Int, dy: Int) {
      x = x + dx
      y = y + dy
   }
}

object Test {
   def main(args: Array[String]) {
      val point = new Point(10, 20)
      //Point.move(100,200)  
      //运行结果为110,220
      printPoint

      def printPoint{
         println ("x ====== : " + point.x);
         println ("y ====== : " + point.y);
      }
   }
}

在这里插入图片描述 在这里插入图片描述
scala伴生对象
当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。
你必须在同一个源文件里定义类和它的伴生对象。
类被称为是这个单例对象的伴生类:companion class。
类和它的伴生对象可以互相访问其私有成员。

// 伴生对象,与类名字相同,可以访问类的私有属性和方法
object ObjectOps {
//伴生类
class Fish private(val name:String)
{
  private def getlove() = name + "  like " + Fish.sky
}

object Fish {
  private val sky = "the sky"
  private val fish = new Fish("the fish")
  def printlover =println(fish.getlove())
}

  def main(args: Array[String]): Unit = {
    Fish.printlover
  }
}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/a_6_9_z/article/details/90022305