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)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容