オブジェクト指向設計クラスの宿題に取り組んでいますが、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 を非表示にする必要がありますが、非表示にする方法がわかりませんが、コンパニオン オブジェクト内でアクセスできます。
ここで私が間違っていることを誰かに教えてもらえますか?