不同于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)