我正在为我的面向对象设计类做作业,我遇到了scala的伴生对象的问题。我在一些地方读过,伴生对象应该可以访问其伴生类的私有方法,但我似乎无法使其工作。(正如一个注释,任务的核心与实现二进制搜索树有关,所以我不仅仅是在寻求答案…)
我有一个对象,它应该创建我的私有类bsttlas的实例(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
...
}
}
但当我开始编译时,我得到了以下错误:
问题23.scala:15:错误:方法
无法在中访问HelpFocusRoom
阿特拉斯,阿特拉斯
a.HelpFocusRoom(新房);
HelpFocusRoom函数需要隐藏,但我不知道如何隐藏它,并且仍然可以在伴生对象内部访问它。
有人能告诉我我这里做错了什么吗?