scala之对象

不同于java,scala有object语法。scala中没有static关键字,不过可以通过object实现同样的目的。

object Student {

  private var num = 0
  def uniqueNum = {num+=1;num}
}

println(Student.uniqueNum)

这样就定义了个一个单例对象Student。
一个程序的main方法,只能定义在object中。

object ScalaTest{
  def main(args: Array[String]): Unit = {
    println("Hello World!")
  }
}

还有一个语法糖,不写main方法,直接继承App。

object ScalaTest extends App {
    println("Hello World!")
}

如果一个类即需要实例方法,也需要静态方法,可以通过伴生对象来实现,即类和object是同名的。

object Student {
  private var num = 0
  def uniqueNum:Int = {num+=1;num}
}

class Student {
  private val id = Student.uniqueNum
  @BeanProperty val score = 0
  def getId:Int = id
}

在对象中可以定义apply方法,当遇到如下表达式时,会自动调用该方法。

Object(arg1, arg2, ..., argn)

这种调用方式和调用constructor是不一样的,但形式很类似,要加以区分。

通过object还可以实现枚举。

object Color extends Enumeration {
  val RED, BLACK  = Value
}

println(Color.BLACK)

你可能感兴趣的:(scala之对象)