Actually, maybe you do need the empty constructor after all. But that is a bit of bad design, where a class has a field of its own type (a self-referential class), which can become
null unexpectedly. I presume your book (by the way:
which book?) shows you that code as an example of what can go wrong.
You will have to get a pencil and paper and go through the code writing down what all the references point to. Remember a field starts off pointing to
null by default. As you go through the code you will need to rub out the connections and replace them with new connections.
The dot operator (or more precisely the dot separator) separates an object/class/etc from one of its fields/constructors/methods/etc. The two belong together, so
fooo.foo() means, “call the
foo() method belonging to the object
fooo.”