Quando una classe viene istanziata, un suo costruttore viene invocato. Ma deve essere eseguito anche un costruttore della super-classe poi ancora della super-super-classe ecc... fino a java.lang.Object (il cui costruttore non fa nulla). E quindi ritorna indietro.
Questo perché ciascuna classe potrebbe avere campi da inizializzare o cose da eseguire alla inizializzazione.
La prima istruzione di un costruttore deve essere una invocazione this( ...eventuali arg... ) oppure super( ...eventuali arg... ). Con this() viene semplicemente passata la palla ad un altro costruttore di quella classe. Ma prima o poi ci deve essere una invocazione super().
Se il programmatore non mette esplicitamente una di queste due invocazioni, il compilatore mette un super() senza argomenti.
Nella tua classe TestClass, il costruttore diventa realmente:
codice:public TestClass() { super(); System.out.println("TestClass created"); }