import org.aspectj.testing.Tester; public class InitializationOrder { public static void main (String[] args) { C c = new C(); Tester.check(null != c.s, "null == c.s"); Sub s = new Sub(); Tester.check("ok" == s.o, "\"ok\" == s.o"); Tester.check(null == s.p, "null == s.p"); } } class C { public String s = null; C(String s) { this.s = s; } C() { this("uh oh"); } } class S { public Object p; S(Object p) {this.p = p;} } class Sub extends S { Sub() { super(null); // if (o), then C E illegal use of uninitialized value o = "ok"; } Object o; }