伴生对象应用场景
伴生对象可实现 java中的工厂方法模式,即:不能通过 类的构造器 创建对象,而是通过 某个方法来创建
将类的主构造器定义成
private在 object对象中定义方法,通过该方法 创建类对象
例子
/*
将类的主构造器定义成private
在其他地方就不能通过构造器创建对象
*/
class Phone private(var cpu:String) {
def call(num:String):Unit = {
//通过名字访问伴生对象的属性。相当于java中访问静态属性
println(s"用 ${Phone.name} - $cpu 给 $num 打电话")
Phone.about() //通过名字访问伴生对象的方法。相当于java中调用静态方法
}
}
object Phone {
var name:String = "iphone15" //相当于java中的静态属性
def about():Unit = { // 相当于java中的静态方法
println("关于信息。。。")
}
/*
通过该方法创建对象
*/
def newInstance(cpu:String):Phone = return new Phone(cpu)
}
object test{
def main(args: Array[String]): Unit = {
//通过伴生对象的方法创建对象
val phone:Phone =Phone.newInstance("A100")
phone.call("110")
}
}