Instance variables are initialized after the super constructor returns. But because you invoke an overriden method in the super constructor the method uses variables that aren't initialized yet. That explains the null output.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.