When a parent class references a static member of a subclass during its own initialization, the results will not be what you expect because the child class won't exist yet.
In a best-case scenario, you'll see immediate failures in the code as a result. Worst-case, the damage will be more insidious and difficult to track down.
class Parent { public static final int childVersion = Child.version; } class Child extends Parent { public static final int version = 6; }