scala:对象object

Scala没有静态方法或字段,可以用对象object(首字母小写)结构完成类似的功能。

object M {
  var count = 0;
  def inc = {count += 1; count}
  
  def main(args: Array[String]){
    println(M.count)
    M.inc
    println(M.count)
  }
}

对象的构造器在对象第一次被使用时调用,如果对象从未被使用,构造器也不会执行。
对象可以扩展类或者特质,但不能提供构造器参数。

class A{
  var i = 0;
}

object M extends A{
  def main(args: Array[String]){
    i = 4
    println(M.i)
  }
}  //输出:4

伴生对象

class T private(val i: Int){
} //不可以用new关键字获取此类的实例

object T{
  def apply(i: Int) = {new T(i)}
}

伴生对象和类同名,且可以和类相互访问私有特性。类和伴生对象必须存在于同一个源文件中。
类调用伴生对象的属性用:对象名.属性

每一个Scala程序必须从一个对象的main方法开始执行,这个方法类型为Array[String] => Unit
若不自己定义main方法,也可以扩展App特质,将要执行的程序代码放入构造器内。

object T extends App{
  println("hello world.")
  println(args.length)
}

App特质有args成员变量,存储命令行参数,类型为Array[String]

如下可以显示程序运行时间(前提是类扩展了App特质):

scala -Dscala.time 类名 命令行参数
posted @ 2018-12-29 09:00  xuejianbest  阅读(689)  评论(0编辑  收藏  举报