説明
- Scalaでは、新しいメソッドを使用してオブジェクトを作成する代わりに、コンパニオンオブジェクトのapplyメソッドを使用してオブジェクトを作成できます。
- applyメソッドはオーバーロードされる可能性があります。パラメーターを指定したapplyメソッドは、クラス内の対応するパラメーター化されたコンストラクターを呼び出します。
- newを使用してオブジェクトを作成すると、クラスのコンストラクターが呼び出されます。クラス名のメソッドを使用してオブジェクトを作成すると、コンパニオンオブジェクトのapplyメソッドが呼び出されます。
- クラスのメインコンストラクターをプライベートにしたい場合は、メインコンストラクターの括弧の前にプライベートを追加できます(通常はシングルトンモードで使用されます)。
コード
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})"
}