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 類名 命令行參數