Я нахожусь на третьем дне изучения scala. Использование книги «начать scala».Confuse about scala private field variable
Te автор использует пример, чтобы показать различия между переменным определить с валями варом и без вар Валу:
class Book(private val title: String) {
def printTitle(b: Book) {
println(b.title)
}
}
И в консоли:
scala> val book = new Book("Beginning Scala")
book: Book = [email protected]
scala> book.printTitle(new Book("Beginning Erlang"))
Beginning Erlang
Вот, что меня смутили не с/без val var, но частный модификатор:
Я не уверен, если я понимаю частное право, но если scala хочет титул как личное поле, то почему он позволяет другим получить к нему доступ из-за пределов, я думал, что prinTitle не должен быть в состоянии получить доступ к новой книге («Начало Эрланга») 'ы название поля
Спасибо. Наверное, мне может понадобиться немного времени, чтобы понять все это. Чтобы убедиться, что я правильно понимаю, что вы имеете в виду: будет ли это «Заголовок значения приватным классу, а не экземпляру», понимать как «Заголовок значения является приватным для другого типа класса, а не экземпляру, сгенерированному из этого класса» ? – Kuan
@ Kuan Исправить. Цель состоит в том, что экземпляры уже знают внутренности друг друга, поскольку они имеют один и тот же вид и поэтому получают доступ к ним.Но так как иногда вы действительно хотите жестко контролировать внутренности, существует частный [этот] модификатор, ограничивающий доступ только к экземпляру. –
Я снова прочитал эту часть в книге, чтобы убедиться, что я понимаю, как класс работает правильно: могу ли я понять, что все поля класса Scala доступны через функцию getter и setter, а не напрямую обращаться к этой переменной? Таким образом, PRIVATE ограничивает доступ к функции set getter set (я не уверен, разрешает ли он только метод memeber или полностью удалять getter setter), чтобы заставить мир снаружи не иметь доступа к этой переменной? – Kuan