I have a pair of classes looking like this;
public abstract class Class1 { //... public Class1() { //... function2(); //... }
super classes are always initialised before subclasses. Only static fields of a sub class can be initialised first.
You can call an overridden method from the super class which then accesses a field which is not initialised. This is considered bad practice.