A--- B---- i | j | [4 | 56]| class A { int i; A(int i) { this.i = i; } } class B extends A { int j; B() { // (1) super(4); j = 56; } } new B() -> constr (1) ((A)new B()).a // for (A a : as) { for (int i = 0; i < as.length(); ++i) { A a = as.get(i); if (a instanceof B1) { B1 b1 = (B1)a; b1.someFunction(); } }