Я работаю над домашним заданием для моего объектно-ориентированного класса дизайна, и у меня возникают проблемы с сопутствующими объектами Scala. Я читал в нескольких местах, что объекты-компаньоны должны иметь доступ к частным методам своего компаньона, но я не могу заставить его работать. (Как примечание, мясо задания было связано с реализацией двоичного дерева поиска, поэтому я не просто прошу ответа ...)Почему я не могу получить доступ к методам частного класса в сопутствующем объекте класса в 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: method helpFocusRoom cannot be accessed in Atlas.Atlas a.helpFocusRoom(newRoom);
функция helpFocusRoom должна быть скрыта, но я не знаю, как скрыть ее и все еще иметь к ней доступ внутри объекта-компаньона.
Может ли кто-нибудь сказать мне, что я здесь делаю неправильно?
wow .. Я никогда не знал, что есть ярлык «домашняя работа» – pavanred