Ответ 1
См. ссылку scala, в частности, главу 5.2. Некоторая выдержка:
Частный модификатор может использоваться с любым определением или декларацией в шаблоне. Доступ к этим элементам можно получить только из встроенного шаблона и его сопутствующего модуля или класса компаньона (§5.4). Они есть не наследуемые подклассами, и они не могут переопределять определения в родительском классы.
Модификатор может быть квалифицирован с помощью идентификатора C (например, private [C]), который должен обозначают класс или пакет, содержащий определение. Участники, помеченные такой модификатор доступен, соответственно, только из кода внутри пакета C или только из кода внутри класса C и его сопутствующего модуля (п. 5.4). Такие члены также наследуются только из шаблонов внутри C.