说明
我们都知道,静态成员在 Java 中有很大的作用,因为 Java 没有全局变量,也不存在包级函数,一切属性和方法都是在类里面,所以在写一些工具函数和全局变量时,都需要用到 static 关键字修饰的静态成员。
由于scala移除了static关键字,有时候我们又需要实现类似的功能,这个时候可以使用类的伴生对象来实现,使得一些属性、方法能够在更大的作用域生效
实现
object Object {
def main(args: Array[String]): Unit = {
val student3 = new Student3
student3.printInfo()
}
}
//定义类
class Student3(var school: String = Student3.school, var name: String = "小明", var age: Int = 23) {
def printInfo(): Unit = {
println(s"student3: SCHOOL = $school NAME = $name AGE= $age")
}
}
//伴生对象
object Student3 {
//相当于java中的静态属性,也就是整个类共有的属性
val school: String = "XY"
}
通过伴生对象的 apply 方法,实现不使用 new 方法创建对象。
object Object {
def main(args: Array[String]): Unit = {
val student3 = Student3.apply("李华", 21)
//.apply可以省略
val student = Student3("小黑", 23)
student3.printInfo()
student.printInfo()
}
}
//定义类
class Student3(var school: String = Student3.school, var name: String = "小明", var age: Int = 23) {
def printInfo(): Unit = {
println(s"student3: SCHOOL = $school NAME = $name AGE= $age")
}
}
//伴生对象
object Student3 {
//相当于java中的静态属性,也就是整个类共有的属性
val school: String = "XY"
def apply(name: String, age: Int): Student3 = new Student3(Student3.school, name, age)
}