Sto lavorando a un compito a casa per la mia classe di progettazione orientata agli oggetti, e mi trovo nei guai con gli oggetti companion di Scala. Ho letto in alcuni punti che si suppone che gli oggetti companion abbiano accesso ai metodi privati della loro classe companion, ma non riesco a farlo funzionare. (Proprio come una nota, la carne del compito ha a che fare con l'implementazione di un albero di ricerca binario, quindi non sto solo chiedendo risposte ...)Perché non riesco ad accedere ai metodi di classi private nell'oggetto compagno della classe in Scala?
Ho un oggetto che dovrebbe creare un'istanza di la mia classe privata, BstAtlas (Bst è anche definito nell'oggetto Atlas, tirò fuori per chiarezza):
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
...
}
}
Ma quando vado a compilare, ottengo il seguente errore:
Question23.scala:15: error: method helpFocusRoom cannot be accessed in Atlas.Atlas a.helpFocusRoom(newRoom);
il function helpFocusRoom deve essere nascosto, ma non so come nasconderlo e ho ancora accesso ad esso all'interno dell'oggetto associato.
Qualcuno può dirmi cosa sto facendo male qui?
wow .. Non ho mai saputo che esistesse un tag "compiti" – pavanred