这是代码和输出:
//A scala class with a private variable and one method
class A {
private var a1 = "Zoom"
def A1(): Unit = {
println("A1 Class")
}
}
//A companion object
object A {
def A2(): Unit = {
println("A1 Obj")
val objA = new A
objA.A1()
println("a1 -> "+ objA.a1)
}
}
Output
======
A1 Obj
A1 Class
a1 -> Zoom
现在我的疑问是,如果我不想使用 new 运算符来创建 A 类的对象,那么伴随对象如何打印a1(私有变量)值并访问 A 类的 A1 方法。我的意思是说我想通过伴随对象 A 访问 Companion Class A 的两个成员。
//A companion object
object A {
def A2(): Unit = {
println("A1 Obj")
A.A1() //It should print A1 Class
println("a1 -> "+ A.a1) //It should print Zoom
}
}
上面的代码片段也应该可以正常工作,因为在 Mardin Odersky 的书中已经写到A 类及其伴随对象可以访问彼此的私有成员。