我正在为我的面向对象设计课做家庭作业,并且在使用 Scala 的伴随对象时遇到了麻烦。我在一些地方读到伴随对象应该可以访问它们的伴随类的私有方法,但我似乎无法让它工作。(作为说明,任务的重点与实现二叉搜索树有关,所以我不只是在寻求答案......)
我有一个对象应该创建我的私有类的实例,BstAtlas(Bst 也在 Atlas 对象中定义,为清楚起见将其取出):
object Atlas {
def focusRoom(newRoom:Room,a:Atlas):Atlas = a.helpFocusRoom(newRoom);
abstract class Atlas {
...
protected def helpFocusRoom(n:Room):Atlas;
...
}
private class BstAtlas(bst:Bst) extends Atlas {
...
protected def helpFocusRoom(newRoom:Room):Atlas = ...
// uses some of bst's methods
...
}
}
但是当我去编译时,我得到以下错误:
Question23.scala:15: error: 方法 helpFocusRoom 无法在 Atlas.Atlas a.helpFocusRoom(newRoom) 中访问;
函数 helpFocusRoom 需要隐藏,但我不知道如何隐藏它并且仍然可以在伴随对象内部访问它。
谁能告诉我我在这里做错了什么?