Хорошая книга утверждает, что:
Класс и его объект-компаньон могут получать доступ к закрытым членам друг друга.
Возможно, наивно, Я понял, что это означает, что классу не нужно явно импортировать элементы из своего сопутствующего объекта. То есть, сработало бы следующее:
object Foo {
def bar = 4
}
class Foo {
def foo = bar
}
Ну, причина, по которой вы читаете это, в том, что это не так. Так что мне действительно нужно объявить что-то вроде этого:
class Foo {
import Foo._
def foo = bar
}
Да, именно так, как вы заявляете. Есть доступ, и есть область видимости - сопутствующие классы / объекты имеют доступ, а не область действия.
Это похоже на объявление чего-то публичного и частного - это не делает этих участников доступными для всех, а просто дает им доступ к этому.
Да (и я хочу получить за это свои 15 очков!)
Но для расширения их области не перекрываются, поэтому импорт необходим.
"Может получить доступ к закрытым членам" означает, что работает следующее:
object Foo {
private def bar = 4
}
class Foo {
def foo = Foo.bar
}