You can call overridden methods from constructors, but Bad , but should not . You have illustrated the reason why this is bad: the derived class does not get the ability to initialize, so uninitialized fields will be used - in your example, the default value for int x is 0 , so it prints 0 .
Luchian grigore
source share