In the PDF version of the 3rd edition of Programming in Scala in §4.3 2nd paragraph last sentence says:
"A class and its companion object can access each other’s private members."
This is in its generality false. A class can see (private) members of a companion object, but a companion object can't access the members of the associate class.
Moreover, you need to import the companion object's member names explicitly using e.g. "import X._" before you can access the object's members from the associated class or from an instance of that class.
But I fail to see how an object can have meaningful access to class members, which are essentially always members of an instance. If there is more than one instance, which instance to choose?
1. I think this line should be corrected in the book because it is very confusing. Only if you know Java and the behavior of a static in a class well enough, you understand why it can't work.
2. I failed to find an explanation in the book never that you need to import the names from the object into the class, before you can access them. It would have been nice to have that pointed out in the book.
At this moment only googling and experimenting (and my experience with Java) made clear what the limitations on the purported mutual accessibility of (companion) object and class members actual are.