说明
- 在Scala中,可以使用伴生对象的apply方法创建对象,而不使用new的方法创建对象。
- apply方法可以重载。带参的apply方法调用的是类中对应的有参构造器。
- 当使用new创建对象时,调用的是类的构造器。当使用类名的方法创建对象时,调用的是伴生对象的apply方法。
- 如果想要类的主构造器变成私有的,可以在主构造器的括号前加private(常用于单例模式)。
代码
object Scala01_CreateObject {
def main(args: Array[String]): Unit = {
val p1 = new Person01
val p2 = Person01
val p3 = Person01("zs",21)
println(p3)
}
}
object Person01 {
def apply: Person01 = new Person01()
def apply(name: String, age: Int): Person01 = new Person01(name, age)
}
class Person01 {
var name: String = _
var age: Int = _
def this (name: String, age: Int) {
this ()
this.name = name
this.age = age
}
override def toString: String = s"Person(name = ${name}, age = ${age})"
}