scala教程:单例对象和伴生对象(object)

单例对象

Scala语言是 完全面向对象 的语言,所以 没有 静态 概念

但是Java有静态概念(如:静态属性、静态方法),scala为了和Java语言交互,提供 object 对象 ,其 属性、方法 默认是静态的,该对象为 单例对象

语法

单例对象采用 object 关键字声明,其余写法与定义类相同

object 对象名{

  val 属性:类型=值

  def 方法名(形参列表):返回类型 = {

  }
}

例子

object Person{
  val name:String="lucy"

  def main(args: Array[String]): Unit = {

    println("123")

  }
}

解释:

  • 直接创建一个 单例对象

  • 可以有 main() 入口方法

反编译

下图红框处,创建单例对象

伴生对象

如果 object 对象名 与 类名 一样,将 该object对象 称为该类的 伴生对象,相对应,将该类 称为 该object对象 的 伴生类

在伴生类中,可以通过 名字 访问伴生对象的 所有属性、方法

class Phone(var cpu:String) {

  def call(num:String):Unit = {
    //通过名字访问伴生对象的属性。相当于java中访问静态属性
    println(s"用 ${Phone.name} - $cpu 给 $num 打电话")
    Phone.about() //通过名字访问伴生对象的方法。相当于java中调用静态方法
  }
}

object Phone {

  var name:String = "iphone15" //相当于java中的静态属性

  def about():Unit = { // 相当于java中的静态方法
    println("关于信息。。。")
  }
}

object test{
  def main(args: Array[String]): Unit = {

    val phone:Phone = new Phone("A100")

    phone.call("110")


  }
}

原文出处:/show_1IX1DOCir9AR.html