Ich arbeite an einer Hausaufgabe für meine objektorientierte Design-Klasse, und ich habe Probleme mit den Begleitobjekten von Scala. Ich habe an einigen Stellen gelesen, dass Companion-Objekte Zugriff auf die privaten Methoden ihrer Companion-Klasse haben sollen, aber ich kann nicht scheinen, dass es funktioniert. (Nur eine Anmerkung, das Fleisch der Aufgabe hatte mit der Implementierung eines binären Suchbaums zu tun, also frage ich nicht nur nach Antworten ...)Warum kann ich nicht auf private Klassenmethoden im Begleitobjekt der Klasse in Scala zugreifen?
Ich habe ein Objekt, das eine Instanz von erstellen soll meine private Klasse, BstAtlas (Bst auch im Atlas-Objekt definiert ist, dauerte es für Klarheit out):
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
...
}
}
Aber wenn ich zu kompilieren gehen, bekomme ich folgende Fehlermeldung:
Question23.scala:15: error: method helpFocusRoom cannot be accessed in Atlas.Atlas a.helpFocusRoom(newRoom);
die Die Funktion helpFocusRoom muss ausgeblendet werden, aber ich weiß nicht, wie ich sie verstecken und trotzdem darauf zugreifen kann innerhalb des Begleitobjekts.
Kann mir jemand sagen, was ich hier falsch mache?
wow .. Ich wusste nie, dass es ein "Hausaufgaben" -Tag gab – pavanred