In a constructor if you call this() the compiler won't implicity insert super(). In the constructor Animal(), there is a this() called, and for this reason the compiler don't insert super(), whereas in constructor Animal(String name) the compiler implicity adds super() (at the first line).
If you take a look at the order of execution, you'll see that, first of all Animal() is called, then Animal() calls this(makeRandomName()) but we still don't arrived to super() and as k&B says makeRandomName() has to be static because superclass is still not constructed.
There are 29 Knuts in one Sickle, and 17 Sickles make up a Galleon. 42 tiny ads in a knut: