Je travaille sur un devoir pour ma classe de conception orientée objet, et j'ai des problèmes avec les objets compagnons de Scala. J'ai lu dans quelques endroits que les objets compagnons sont supposés avoir accès aux méthodes privées de leur classe d'accompagnement, mais je n'arrive pas à le faire fonctionner. (Juste comme une note, la viande de la cession a dû faire avec l'implémentation d'un arbre de recherche binaire, donc je ne demande pas seulement des réponses ...)Pourquoi ne puis-je pas accéder aux méthodes de classes privées dans l'objet compagnon de la classe dans Scala?
J'ai un objet qui est censé créer une instance de ma classe privée, BstAtlas (Bst est également défini dans l'objet Atlas, a pris pour plus de clarté):
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
...
}
}
Mais quand je vais compiler, je reçois l'erreur suivante:
Question23.scala:15: error: method helpFocusRoom cannot be accessed in Atlas.Atlas a.helpFocusRoom(newRoom);
le function helpFocusRoom doit être caché, mais je ne sais pas comment le cacher et y avoir toujours accès à l'intérieur de l'objet compagnon. Est-ce que quelqu'un peut me dire ce que je fais mal ici?
wow .. Je n'ai jamais su qu'il y avait un "devoir" tag – pavanred