object Student {
def test(): Unit = {
println("test")
}
}
object T5 {
def main(args: Array[String]): Unit = {
Student.test()
}
}
静态语法不是面向对象的,所以scala中没有静态语法,为了和java兼容,所以scala提供单例对象来模拟静态操作
。使用Object关键字声明的类,如Student ,可通过类名直接访问方法
,如Student.test()
。Student ,会产生2个类文件,一个就是当前类
的类文件,另一个是当前类$
的类文件
类名$
的类文件中的类 构造方法私有化
,无法直接构建对象,在类的内部通过静态代码块
可以返回对象,而这个对象只有一个,称之为单例对象
,可通过这个对象访问其中的方法
Student.test()
实际使用的是单例对象Student$.MODULE$
,即伴生对象
: Object声明的类中伴随着类所产生的单例对象