Scala没有静态方法或字段,可以用对象object
(首字母小写)结构完成类似的功能。
object M {var count = 0;def inc = {count += 1; count}def main(args: Array[String]){println(M.count)M.incprintln(M.count)}
}
对象的构造器在对象第一次被使用时调用,如果对象从未被使用,构造器也不会执行。
对象可以扩展类或者特质,但不能提供构造器参数。
class A{var i = 0;
}object M extends A{def main(args: Array[String]){i = 4println(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 类名 命令行参数