First, recursively initialize any super class, unchanged.
Then recursively initialize super interfaces that declare a non-abstract instance method in class file interface array order.
interface J extends I
class A implements J
interface K extends I
class B extends A implements K
class C implements L
order of initialization: I, J, A, K, B, L, C
In JDK8 this was accomplished by initializing any super interfaces that declare or inherit default methods when initializing all superclasses of a class being initialized.This surprises people by changing the order of superinterface initialization.