伴生类和伴生对象
// 伴生对象
object Ass{}
// 伴生类
class Ass{}
要求: 伴生类和伴生对象要在同一个.scala文件并且名字相同
Java的静态成员和非静态成员都写在一个类里. 而scala静态成员需要写写在伴生对象里面.
伴生类需要用 new 来创建,而伴生对象不用new.
使用伴生对象创建伴生类的实例需要定义apply()方法
package base
object runDM {
def main(args: Array[String]): Unit = {
// // Array的伴生类和伴生对象
// // 伴生类方式创建
// val arrC = new Array[Int](5)
// // 伴生对象方式创建
// val arrO = Array[Int](5)
// new 创建Ass类
val assC = new Ass("new create!")
// 使用伴生对象隐式使用apply方法创建 Ass类对象
val assO = Ass("create!")
println(assC.getName)
println(assO.getName)
}
}
// Ass类的伴生对象
object Ass {
// 静态方法
def show(): Unit = {
println("Object Ass!")
}
// apply方法需要 (), 类似于Ass类的构造器
def apply(): Ass = new Ass()
def apply(name: String): Ass = new Ass(name)
}
// Ass object的伴生类
class Ass {
private var name: String = _
def this(name: String) {
this()
this.name = name
}
def getName: String = this.name
}