Companion Object
Classes and Objects can have the same name. The object is called a ‘Companion Object’. We commonly use Companion Objects for Factories.
Define
class Employee(val name:String, var age: Int){
override def toString(): String = "Name: %s, Age: %s".format(this.name, this.age)
}
object Employee{
def apply(name: String, age: Int): Employee = new Employee(name, age)
}
Usage
Then the new
can be removed when creating an instance
object CompanionObject extends App{
val p1 = Employee("Robin", 25)
val p2 = Employee("Lin", 29)
println(p1)
println(p2)
}
Output
Name: Robin, Age: 25
Name: Lin, Age: 29