Я работаю над домашним заданием для своего класса объектно-ориентированного дизайна, и у меня возникают проблемы с сопутствующими объектами 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: ошибка: метод helpFocusRoom недоступен в Atlas.Atlas a.helpFocusRoom (newRoom);
Функция helpFocusRoom должна быть скрыта, но я не 'не знаю, как его спрятать, и у него все еще есть доступ к нему внутри объекта-компаньона.
Может кто-нибудь сказать мне, что я делаю здесь неправильно?